Spezielle Shellvariablen Der Kommandozeileninterpreter Bash Parametersubstitution Inhalt Index


Programmierung der Bash

Niemand wird auf die Idee kommen, mit den Mitteln der Bash ein Office-System zu programmieren. Für solche Zwecke fehlen der Programmiersprache einfach die Ausdrucksmittel und selbst wenn jemand sich die Arbeit machen würde, wäre ein solches Programm furchtbar langsam...

Sinn der Programmiersprache der Bash ist z.B. die Unterstützung der Automatisierung von wiederkehrenden Befehlsfolgen.

Kommen wir auf ein reales Problem zurück. Wir haben im System mit dem Programm tar 80 Archive erzeugt und diese anschließend mit dem Programm gzip komprimiert.

Die Archive bezeichneten wir mit archiv01 bis archiv80. tar ergänzte das Suffix .tar und gzip hing nochmals .gz hintenan, so dass die Dateinamen nun archivXX.tar.gz lauten.

Um die Archive auf ein anderes (nicht vernetztes) System zu kopieren, bedienen wir uns einer MSDOS-formatierten Diskette und speichern die Archive mittels mcopy archiv*.tar.gz a: auf diese.

Auf dem anderen System speichern wir die Dateien zurück. Zu unserer Überraschung nennen sich diese aber nun archi~XX.gz, da in MSDOS zwei Punkte in einem Dateinnamen unzulässig sind und diese maximal 8 Zeichen enthalten dürfen. Unsere Namen wurden automatisch manipuliert...

Wir müssen nun also die ursprünglichen Namen restaurieren. Eine Lösung wäre, achtzig Mal eine Zeile der Art:

user@sonne> mv archiv~01.gz archiv01.tar.gz

einzugeben... eine mühevolle Arbeit :-(

Alternativ lässt sich die Arbeit von einigen wenigen Shellskript-Zeilen bewerkstelligen:

user@sonne> for i in $(ls archiv*.gz); do
> tmp=${i#*~}
> mv $i archiv${tmp%.*}.tar.gz
> done

Die enthaltene Kommandosubstitution $(ls archiv*.gz) haben wir schon kennen gelernt; den weiteren Mechanismen werden wir uns in diesem Abschnitt zuwenden.



Spezielle Shellvariablen Der Kommandozeileninterpreter Bash Parametersubstitution Inhalt Index