Bash-Scripting: Eingabe- oder Standardwert nach Prompt verwenden

Eine typsche Anforderung beim Bash-Scripting sind Standardvorgaben beim Einlesen von Werten (Eingabeprompt). Der Anwender wird aufgefordet, eine Information einzugeben, bekommt gleichzeitig aber einen Default-Value angeboten. Drückt er nun ENTER ohne Angabe eines Wertes, wird dieser Default-Value benutzt. Dieses Vorgehen ist sehr bekannt bei Software-Installationen, die eine Konfiguration benötigen (bspw. MySQL).

Die Bash bzw. GNU bringt die so genannten Shell Parameter Expansion mit. Hiermit lassen sich Variablen überschreiben und erweitern, sofern diese leer oder nicht gesetzt sind. In unserem Beispiel prüfen wir, ob eine Variable (die Eingabe) leer ist und wenn ja, wird ein Standard gesetzt. 

Am besten lernt man an diesem kleinen Script:

#/!bin/bash

# Benutzereingaben
read -p 'Vorname: ' VAR_VORNAME
read -p 'Nachname: ' VAR_NACHNAME
read -p 'Geschlecht: ' VAR_GESCHLECHT

# Eingabewert oder (wenn leer) Standards verwenden
VAR_VORNAME=${VAR_VORNAME:=Unbekannt}
VAR_NACHNAME=${VAR_NACHNAME:=Unbekannt}
VAR_GESCHLECHT=${VAR_GESCHLECHT:=Frau}

# Ausgabe
printf "Ich heiße $VAR_VORNAME $VAR_NACHNAME und bin ein(e) $VAR_GESCHLECHT"

Die Shell Parameter Expansion ":=" prüft ob die Variable leer ist. Wenn ja, wird der angebenene Wert (in diesem Beispiel "Unbekannt" und "Frau") verwendet. Das ist das Ergebnis:

root@debianVbox:~# ./test.sh

Vorname:
Nachname:
Geschlecht:
Ich heiße Unbekannt Unbkannt und bin ein(e) Frau

root@debianVbox:~# ./test.sh

Vorname: Peter
Nachname: Pan
Geschlecht: Mann
Ich heiße Peter Pan und bin ein(e) Mann