Bashシェルスクリプトの意味を理解していません。
MYSET=${*:- "-a"}
誰でもこれを説明できますか?
答え1
変数が設定されていないか空の場合、パラメータ拡張は${variable:-value}
文字列に展開されます。これは、シェルに固有のものではなく、すべてのPOSIX準拠シェルに適用される標準パラメータ拡張です。value
variable
bash
特殊変数は、位置パラメータと区切り文字の最初の文字(デフォルトは空白)で$*
連結された文字列です。$IFS
位置引数は、スクリプトやシェル関数に提供される引数、またはvalueなどset
のユーティリティを使用して設定されます。これも具体的ではありません。$1
$2
$3
bash
コマンドは、値が空でない限り、変数を(通常は空白のあるスクリプトに指定されたコマンドライン引数)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