Wie funktioniert dieses Standardargument für ein Bash-Skript?

Wie funktioniert dieses Standardargument für ein Bash-Skript?

Ich habe gerade entdeckt

default="no parameter provided"
echo ${1:-$default}  # in a script

Wie heißt das? Ist es eingebaut? Funktioniert es so, wie es aussieht?

Antwort1

Dies ist Teil vonShell-Parametererweiterungund ist eingebaut injede POSIX-Shell:

${parameter:-word}

WennParameternicht gesetzt oder null ist, wird die Erweiterung vonWortersetzt wird. Andernfalls wird der Wert vonParameterersetzt wird.

Wenn in Ihrem Beispiel ${1}nicht nicht gesetzt oder null ist, wird sein Wert ausgegeben, andernfalls ${default}wird stattdessen der Wert von ausgegeben.

Antwort2

Es ist Parameter Expansion, beschrieben in inBash-Manpagedie Sie auch lokal aufrufen können mit man bash:

   ${parameter:-word}
          Use Default Values.  If parameter is unset or null, the
          expansion of word is substituted.  Otherwise, the value
          of parameter is substituted.

verwandte Informationen