Usar eval
está errado em primeiro lugar. O shell já avaliou o que você passa para FUNCexecEcho
, avaliar uma segunda vez é errado e potencialmente perigoso. Em seu código, você também está descartando o status de saída do comando.
FUNCexecEcho() {
echo "EXEC: $@"
"$@"
}
(não há problema com aliases, a menos que você defina um alias para "$@"
). Compare o comportamento em:
FUNCexecEcho echo 'this;rm -rf "$HOME"'
com as duas versões. Com o meu, dá:
$ FUNCexecEcho echo 'this;rm -rf "$HOME"'
EXEC: echo this;rm -rf "$HOME"
this;rm -rf "$HOME"
Eu sugiro que você não o execute com o seu se você não tiver backups; -)