Existe uma maneira mais simples do que você está fazendo. Se você usar set -x
, o script ecoará automaticamente cada linha antes de ser executada.
Além disso, assim que você executar outro comando, $?
será substituído pelo código de saída desse comando.
Você terá que fazer o backup para uma variável se você estiver fazendo algo com ela, além de um teste rápido e esqueça. O [
é, na verdade, um programa que possui seu próprio código de saída.
Por exemplo:
set -x # make sure the command echos
execute some command...
result="$?"
set +x # undo command echoing
if [ "$result" -ne 0 ]; then
echo "Your command exited with non-zero status $result"
fi