O problema com o primeiro exemplo é que você está testando se a string que echo
retorna tem comprimento diferente de zero. Uma solução para este problema é a expressão testada eval
uate:
TEST="! -e ~/bin/xyz"
if eval "[ $TEST ]"; then
echo running "$TEST";
fi
Note, que os suportes estão dentro eval
, devido [
é um comando, por isso avaliamos este comando em conjunto com a variável $TEST
como seu argumento.