[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Vielleicht OT]Bash-Script-Programmierung



On 12.05.2010 21:01, Peter Schütt wrote:
> Hallo,
> ich habe ein paar Fragen zur Script-Programmierung unter der Bash.
> Ich mache das unter Debian Testing/Unstable.
> 
> Ich habe eine Menge von Dateien mit derselben Extension (im Beispiel *.dat) 
> und möchte diese in ein anderes Verzeichnis verschieben.
> Nun möchte ich, falls es eine Datei im Zielverzeichnis schon gibt, an die 
> neue Datei einen Suffix mit Nummerierung anhängen. Die Dateierweiterung soll 
> aber gleich bleiben.
> 
> Beispiel:
> 
> /home/ich/subdir/myfile.dat
> 
> wird verschoben nach
> 
> /home/ich/destdir/myfile.dat
> 
> Wenn nun noch einmal eine Datei mit obengenannten Namen auftaucht, dann soll 
> folgendes passieren:
> 
> /home/ich/subdir/myfile.dat
> 
> wird verschoben nach
> 
> /home/ich/destdir/myfile_2.dat
> 
> usw.
> 
> Ausschnitt aus meinem Skript, was das tut:
> 
> for file in $ROOT/subdir/*.dat; do
>    DESTFILE=$ROOT/destdir/`basename $file`
>    
>    if [ -e $DESTFILE ]; then
>      DESTPREFIX=$ROOT/destdir/`basename $DESTFILE .dat`
>      N=2
>      DESTFILE=`echo $DESTPREFIX`_$N.dat
>      while [ -e $DESTFILE ]
>      do
>         N=$((N+1))
>         DESTFILE=`echo $DESTPREFIX`_$N.dat
>      done     
>    fi
>    mv -v $file $DESTFILE
> done
> 
> Zum einen würde ich gerne einmal die Meinung von erfahrenen 
> Skriptprogrammierern zu diesem Code-Abschnitt hören, weil ich bei Skripten 
> noch ein Neuling bin. Insbesondere interessiert mich, ob man die 
> Konstruktion      
>   DESTFILE=`echo $DESTPREFIX`_$N.dat

x="foo_$((y++)).bar"

> besser hinbekommen kann.

ist vielleicht nicht so von Bedeutung für dich aber da ist eine
race-condition.
workaround wie etwa hier:
http://groups.google.com/group/comp.unix.shell/browse_thread/thread/233d175274e246bd/b4deba6bf5fea99a?lnk=raot

> 
> Weitere Fragen:
> 
> Skript-Programmierung kommt mir als Java-Entwickler wie 
> Steinzeitprogrammierung vor: Kein Debugger, keine IDE, keine Unit-Tests.
> Das Debugging bekommt man nur mit eingestreuten echos hin und Syntax-
> Highlighting ist die einzige Unterstützung, die ich finden konnte.
> 
> Aber vielleicht kenne ich nicht die richtigen Werkzeuge.
> Gibt es eine IDE, die Skript-Programmierung unterstützt und zumindest 
> Debugging zur Verfügung stellt?

eris:~# aptitude show bashdb
Package: bashdb
State: installed
Automatically installed: no
Version: 3.1.0.9-1
Priority: optional
Section: devel
Maintainer: Oleksandr Moskalenko <malex@debian.org>
Uncompressed Size: 946k
Depends: bash (>= 3.1), emacsen-common
Description: BASH debugger
 This is a complete rewrite of the Korn Shell debugger from Bill
Rosenblatt's
 `Learning the Korn Shell', published by O'Reilly and Associates (ISBN
 1-56592-054-6) with changes by Michael Loukides and Cigy Cyriac.
However, this
 code now depends on a number of debugging support features that are neither
 part of the POSIX standard nor present are in many POSIX-like shells.
Although
 you can just use bashdb to debug scripts written in BASH, it can also
be used
 just as a front-end for learning more about programming in BASH. As an
 additional aid, the debugger can be used within the context of an existing
 script with its functions and variables that have already been initialized;
 fragments of the existing code can be experimented with by changing
them inside
 the debugger.


cu

Mart


Reply to: