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.