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
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





