文字列の置き換え:空の場合は置き換え、それ以外の場合は空です。

文字列の置き換え:空の場合は置き換え、それ以外の場合は空です。

この種の略語があるかどうか疑問に思います。

現在はできます。

var_empty=; [ -n "$var" ] || var_empty=1; #intermediary variable
echo "REPL_if_var_empty_otherwise_empty=${var_empty:+REPL}"

ブローカーなしで可能ですか?

頑張った

sh -c 'readonly SAME=SAME; var=; echo test0=${var:-SAME} test1=${SAME:+REPL}; echo REPL_if_var_empty_otherwise_empty=${${var:-SAME}:+REPL}'

ただし、これはbad substitution最後のechotest0=SAME test1=REPL)にエラーを引き起こします。なぜそんなことですか?別の方法がありますか?

ベストアンサー1

bash、ksh、またはemulationzshではksh、次のことができます。

r=empty;output=${r[${#var}]}

存在するzsh

output=${${var:-empty$var}%$var}

そうでなければいつでもできる

output=;[ "$var" ]||output=empty

おすすめ記事