bash スクリプトのこのデフォルト引数はどのように機能しますか?

bash スクリプトのこのデフォルト引数はどのように機能しますか?

私は今発見した

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

これは何と呼ばれていますか? 組み込みですか? 見た目どおりに動作しますか?

答え1

これはシェルパラメータの拡張そして、任意のPOSIXシェル:

${parameter:-word}

もしパラメータ未設定またはnullの場合、言葉それ以外の場合は、パラメータ代用されます。

あなたの例では、${1}が設定されていないか null でない場合はその値が出力され、それ以外の場合は の値が${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.

関連情報