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?