No bash, ksh ou zsh
em ksh
emulação, você poderia fazer:
r=empty;output=${r[${#var}]}
Em zsh
:
output=${${var:-empty$var}%$var}
Caso contrário, você sempre pode fazer
output=;[ "$var" ]||output=empty
Eu queria saber se há uma abreviação para esse tipo de coisa.
Atualmente, posso fazer isso.
var_empty=; [ -n "$var" ] || var_empty=1; #intermediary variable
echo "REPL_if_var_empty_otherwise_empty=${var_empty:+REPL}"
Isso é factível sem o intermediário?
Eu tentei
sh -c 'readonly SAME=SAME; var=; echo test0=${var:-SAME} test1=${SAME:+REPL}; echo REPL_if_var_empty_otherwise_empty=${${var:-SAME}:+REPL}'
mas isso resulta em um erro bad substitution
no último echo
( test0=SAME test1=REPL
). Por que é que? Existe outro jeito?