実行中のスクリプトがあるとしましょう。
some-command "$var1" "$var2" ...
空の場合は、空のvar1
文字列ではなく空の文字列に置き換えて、実行されるコマンドを次のようにします。
some-command "$var2" ...
いいえ:
some-command '' "$var2" ...
変数をテストして条件付きで含めるよりも簡単な方法はありますか?
if [ -n "$1" ]; then
some-command "$var1" "$var2" ...
# or some variant using arrays to build the command
# args+=("$var1")
else
some-command "$var2" ...
fi
bash、zshなどからnullに拡張されるパラメータ置換はありますか?それでも残りのパラメータにワイルドカードを使用したい場合があるため、これを無効にして変数を逆参照することはオプションではありません。
ベストアンサー1
Posix互換シェルそして大きな打撃を受けました ${parameter:+word}
:
もし範囲設定されていないか null です。それ以外の場合はnullに置き換える必要があります。言葉(または空の文字列の場合言葉省略)を交換する必要があります。
だからあなたはこれを行うことができます:
${var1:+"$var1"}
設定されていて空でない場合はvar1
確認され、使用されます(通常の二重引用符ルールを使用)。"$var1"
そうでなければ、何も膨らませないでしょう。参考にしてください内部にここに引用された内容は全体ではなく一部です。
zshでも動作します。変数を繰り返す必要があるため、理想的ではありませんが、正確に目的の結果が得られます。
set-but-empty変数を空のパラメータに拡張するには、代わりにset-but-emptyを使用します${var1+"$var1"}
。