この種の略語があるかどうか疑問に思います。
現在はできます。
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
最後のecho
(test0=SAME test1=REPL
)にエラーを引き起こします。なぜそんなことですか?別の方法がありますか?
ベストアンサー1
bash、ksh、またはemulationzsh
ではksh
、次のことができます。
r=empty;output=${r[${#var}]}
存在するzsh
:
output=${${var:-empty$var}%$var}
そうでなければいつでもできる
output=;[ "$var" ]||output=empty