Open Source im professionellen Einsatz

Groß- und Kleinschreibung

Wer schon einmal Konfigurationsdateien oder Benutzereingaben verarbeitet hat und auf robuste Programmierung achtet, kennt das Problem: Lautet der Wert aus der Konfigurationsdatei oder das Ergebnis von »read« nun »JA«, »ja«, »Ja«, »true«, »TRUE« oder etwa »True«?

Bis einschließlich Bash 3.2 formte der Skriptschreiber per »tr«-Aufruf den Wert in eine eindeutige Groß- oder Kleinschreibung um. Die Bash 4 macht hier vieles einfacher. Die Anweisung »declare -u Varname« sorgt automatisch dafür, alle Zuweisungen an die Variable Varname in Großbuchstaben umzuwandeln. Analog dazu gibt es ein »declare -l«, das in Kleinbuchstaben umwandelt. Damit spart der Anwender den Aufruf eines externen Programms und erhöht die Leistung seines Skripts. Wer nur im Einzelfall und nicht global umwandeln will, nutzt die neue Parametererweiterung:

foo=ja
echo ${foo^}
echo ${foo^^}

Der erste Befehl wandelt den ersten Buchstaben in Großbuchstaben um, gibt also »Ja« aus. Der zweite Befehl wandelt dagegen alle Buchstaben um und erzielt das Ergebnis »JA«. Benötigt der Entwickler das Ergebnis in Kleinbuchstaben, verwendet er analog dazu die Schreibweise:

foo=JA
echo ${foo,}
echo ${foo,,}

Noch mächtigere Ersetzungen erlaubt die komplette Syntax »${Var^Pattern}«, die es auch mit den Operatoren »^^«, »,« und »,,« gibt: Nur jene Buchstaben, die auf das Pattern passen, ersetzt dann der Interpreter.

Koprozesse und Wertelisten

Hersteller liefern heute die meisten neuen Rechner mit Multicore-CPUs aus. Nach und nach ziehen deshalb Techniken ein, diese CPUs auch auszulasten. Die Bash 4 bietet die Möglichkeit, so genannte Koprozesse zu starten:

coproc pipes Kommando

Das gibt in den Variablen »pipes[0]« und »pipes[1]« die Deskriptoren für Standard-Ein- und -Ausgabe von Kommando zurück. Über sie kommuniziert der Bash-Hauptprozess mit dem Koprozess - nützlich besonders bei Shellskripten für den parallelen Betrieb [5].

Ein schon vorhandenes, aber ziemlich unbekanntes Bash-Feature sind automatische Wertelisten, die so genannte Brace-Expansion: Der Aufruf »echo {5..15}« zählt von der ersten zur letzten Zahl. Viele Bash-Programmierer verwenden dazu noch einen Aufruf von »seq«:

echo $(seq -s " " 5 15)

Das ist nicht nur weniger performant, sondern auch schwerer zu lesen. Will der Skriptschreiber aber eine solche Ausgabe sortieren, muss er mit dem Nachteil kämpfen, dass sie keine führenden Nullen hat. Mit der Bash 4 schreibt der Shell-User jetzt

echo {05..15}

und erhält - falls nötig - alle Werte zweistellig und mit führenden Nullen.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook