Как работает этот аргумент по умолчанию для скрипта bash?

Как работает этот аргумент по умолчанию для скрипта bash?

Я только что обнаружил

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

Как это называется? Это встроено? Работает так, как выглядит, работает?

решение1

Это частьрасширение параметра оболочкии встроен влюбая оболочка POSIX:

${parameter:-word}

Еслипараметрне установлен или равен нулю, расширениесловоподставляется. В противном случае значениепараметрзаменяется.

В вашем примере, если не установлено или не равно нулю, выводится его значение, в противном случае вместо него выводится ${1}значение .${default}

решение2

Это Parameter Expansion, описано в вСтраница руководства Bashкоторый вы также можете вызвать локально с помощью 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.

Связанный контент