exec
sempre termina o script if executa um comando e o faz com êxito (não relacionado ao código de saída do comando, mas ao início).
exec
pode ser executado sem um comando de uma maneira muito útil: Para redirecionar permanentemente os descritores de arquivos:
exec 3>/path/to/file
Se o comando não puder ser iniciado, o comportamento do shell dependerá da configuração. bash
sai por padrão.
Pode ser melhor usar uma função:
safe_exec () {
cmd="$1"
if test -z "$cmd" || ! test -f "$cmd" || ! test -x "$cmd"; then
exit 1
else
exec "$@"
fi
}
safe_exec echo "some "; echo "test"