Bash 構文クエリ: ${*:- "-a"}

Bash 構文クエリ: ${*:-

Bashシェルスクリプトの意味を理解していません。

MYSET=${*:- "-a"}

誰でもこれを説明できますか?

ベストアンサー1

変数が設定されていないか空の場合、パラメータ拡張は${variable:-value}文字列に展開されます。これは、シェルに固有のものではなく、すべてのPOSIX準拠シェルに適用される標準パラメータ拡張です。valuevariablebash

特殊変数は、位置パラメータと区切り文字の最初の文字(デフォルトは空白)で$*連結された文字列です。$IFS位置引数は、スクリプトやシェル関数に提供される引数、またはvalueなどsetのユーティリティを使用して設定されます。これも具体的ではありません。$1$2$3bash

コマンドは、値が空でない限り、変数を(通常は空白のあるスクリプトに指定されたコマンドライン引数)MYSETに設定します。この場合、初期スペースに設定されます。この特別なケースでは、引用符に違いはありません。$*MYSET-a-a

コマンドラインのサンプルコード:

$ set --
$ MYSET=${*:- "-a"}; printf '%s\n' "$MYSET"
 -a
$ set -- 1 2 3
$ MYSET=${*:- "-a"}; printf '%s\n' "$MYSET"
1 2 3

おすすめ記事