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)
