既存のBourne Shell(sh)では、スクリプト内の特定のポイントで変数が設定されていて、少なくとも特定のデフォルト値があることを確認したい場合は、次の設定を使用できます。
: "${VAR:=defaultValue}"
Zshスクリプトと同等のものは何ですか?
ありがとうございます。
編集:これを行うZshに特定の方法がある場合を意味します。実際のコマンド(:)を実行する代わりに。
Edit2:正しく引用されたパラメータ拡張。 Stéphane Chazelasの回答を参照してください。
答え1
実際、
: ${VAR:=defaultValue}
zsh
これは(このオプションを有効にしないと仮定すると)本当ですが、globsubst
他のシェルではそうではありません。 Bourne などの他のシェルでは、次のnoglob
オプションを有効にしないとサービス拒否の脆弱性が発生します。bash / POSIXシェルで変数を引用することを忘れてしまうセキュリティリスク。
このうち、あなたに必要なもの
: "${VAR:=defaultValue}"
zsh
これらの Bourne 演算子は実際にサポートされており、一部の独自の演算子も同じ方法で導入されます。
${VAR::=value}
無条件value
変数に割り当てられます(そして結果として展開されます)。zsh
これは、他のパラメータ拡張演算子またはフラグと組み合わせることができるので便利です。${:-value}
(つまりVAR
省略)はに拡張されますvalue
。他の演算子と組み合わせるときにも便利です。
別のオプションは次のとおりです。
VAR=${VAR:-defaultValue}
これはzshや他のすべてのBourne様シェルでは大丈夫で、意味をより明確に伝えます。