Eu tenho um /bin/foo
arquivo de script de shell.
Como sair de um script de shell em caso de erro E enviar uma mensagem ao usuário?
Se eu simplesmente usar a, set -e
ele será encerrado em caso de erro, mas nenhum comando será executado quando ocorrer um erro, como enviar uma mensagem para STDOUT ou enviar um e-mail.
A questão: como executar um comando se o shell script gerar um erro?
SLES12, festa.
Responder1
Você pode criar uma função para enviar mensagens ao seu usuário e usá trap
-la para executá-la quando o script for encerrado com erro:
#!/bin/bash
set -e
on_exit () {
echo "This script has exited in error"
}
trap on_exit ERR
echo 'yes' | grep "$1"
Em uso:
$ ./script.sh yes
yes
$ ./script.sh no
This script has exited in error
Responder2
Se você quiser que funcione no sh antigo também (em vez de apenas no bash):
#!/bin/sh
set -e
trap 'test $? -gt 0 && echo "This script has exited in error" >&2' 0
echo 'yes' | grep "$1"