===== 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:
- ''$LOGNAME'' Login-Name des Benutzers
- ''$0'' Der 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
- ''$PWD'' Aktuelles Arbeitsverzeichnis
- ''$OLDPWD'' Der Wert ist das zuvor besuchte Arbeitsverzeichnis; wird vom Kommando cd gesetzt.
- ''$HOME'' Heimverzeichnis für den Benutzer; Standardwert für cd
- ''$UID'' Die User-ID des Anwenders. Diese Kennung ist in der Datei /etc/passwd dem Benutzernamen zugeordnet.
- ''$PATH'' Suchpfad 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
- ''$CDPATH'' Suchpfad für das cd-Kommando
- ''$SHELL'' Zeigt die aktuelle Shell mit dem Pfad an
- ''$RANDOM'' Pseudo-Zufallszahl zwischen 0 bis 32767
- ''$REPLY'' Bei Menüs (select) enthält REPLY die ausgewählte Nummer.
- ''$SECONDS'' Enthält die Anzahl von Sekunden, die seit dem Start (Login) der aktuellen Shell vergangen ist.
- ''$PROMPT_COMMAND'' Hier kann ein Kommando angegeben werden, das vor jeder Eingabeaufforderung automatisch ausgeführt wird.
- ''$PS1'' Primärer Prompt; Prompt zur Eingabe von Befehlen.
- ''$TZ'' Legt die Zeitzone fest (hierzulande MET = Middle European Time)
----
[[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] Daniel Garavaldi