Variablen in Bash
Internal reference: topics/02-1.md
Einleitung
Shellvariablen speichern zugewiesene Wert. Eine Variable kann eine Zahl enthalten, ein Zeichen, oder einen String. Bei Variablennamen wird auf Groß - und Kleinschreibung geachtet, sie können aus Buchstaben und einem Unterstrich \_ bestehen.
Wertzuweisungen werden mit einem '=' Zeichen programmiert und es sind keine Leerzeichen um das '=' erlaubt:
PRICE_PER_APPLE=5 MyFirstLetters=ABC greeting='Hello world!'
Ein Backslash
wird benutzt, um spezielle Zeichen darzustellen:
PRICE_PER_APPLE=5 echo Der Preis eines Apfels ist: \$ $PRICE_PER_APPLE
Man kann die Variable mit ${} umgeben, um Zweideutigkeiten zu verhindern:
MyFirstLetters=ABC
echo Die ersten 10 Buchstaben des Alphabets sind: ${MyFirstLetters}DEFGHIJ
Eine Variable mit zu umgeben, sorgt dafür, dass die Leerzeichen erhalten bleiben.
greeting='Hello world!' echo $greeting Jetzt mit Leerzeichen: $greeting
Variablen können die Ausgabe eines Befehls zugewiesen werden. Dies nennt man Substitution. Substitution erreicht man, indem man den Befehl mit $() oder mit den sog. Backquotes \\ umgibt.
FILELIST=''ls'' FileWithTimeStamp=/tmp/my-dir/file_$(/bin/date +%Y-%m-%d).txt
In anderen Worten: Beim Ausführen des Skripts wird der Befehl innerhalb der $() Klammern ausgeführt und die Ausgabe abgegriffen.
System-Variablen
Folgend die wichtigsten, automatisch verwalteten Variablen der Bash:
$LOGNAMELogin-Name des Benutzers$0Der Name des aufgerufenen Shellscripts$1-$9,${10}, …,$*Parameter des aufgerufenen Shellscripts$#Anzahl Parameter des aufgerufenen Shellscripts$$Die Prozessnummer des aufgerufenen Shellscripts$?Der Beendigungsstatus eines Shellscripts$!Die Prozessnummer des zuletzt gestarteten Hintergrundprozesses$PWDAktuelles Arbeitsverzeichnis$OLDPWDDer Wert ist das zuvor besuchte Arbeitsverzeichnis; wird vom Kommando cd gesetzt.$HOMEHeimverzeichnis für den Benutzer; Standardwert für cd$UIDDie User-ID des Anwenders. Diese Kennung ist in der Datei /etc/passwd dem Benutzernamen zugeordnet.$PATHSuchpfad für die Kommandos (Programme); meistens handelt es sich um eine durch Doppelpunkte getrennte Liste von Verzeichnissen, in denen nach einem Kommando gesucht wird, das ohne Pfadangabe aufgerufen wurde; Standardwerte: PATH=:/bin:/usr/bin$CDPATHSuchpfad für das cd-Kommando$SHELLZeigt die aktuelle Shell mit dem Pfad an$RANDOMPseudo-Zufallszahl zwischen 0 bis 32767$REPLYBei Menüs (select) enthält REPLY die ausgewählte Nummer.$SECONDSEnthält die Anzahl von Sekunden, die seit dem Start (Login) der aktuellen Shell vergangen ist.$PROMPT_COMMANDHier kann ein Kommando angegeben werden, das vor jeder Eingabeaufforderung automatisch ausgeführt wird.$PS1Primärer Prompt; Prompt zur Eingabe von Befehlen.$TZLegt die Zeitzone fest (hierzulande MET = Middle European Time)
