Você pode usar exit 1
para finalizar o script.
O código de saída 0
significa que tudo correu bem, todos os outros indicam algum tipo de erro.
Eu tenho um Synology NAS executando o DSM. Eu criei um script bash para verificar se um determinado arquivo está presente em uma determinada pasta. O script é executado por um cronograma e retorna o resultado para mim por e-mail.
O problema é que recebo muitos e-mails dizendo que o script foi executado corretamente.
O agendador de tarefas do DSM permite enviar o email somente se o script terminar de forma anormal.
A minha pergunta é: como posso forçar o script a terminar de forma anormal?
Eu faria isso para receber um e-mail se o arquivo que estou procurando não existir.
Você pode usar um código de saída se o arquivo estiver ausente:
#!/bin/bash
file="/foo/bar"
if [ -e "$file" ]
then
exit 0
else
exit 1
fi
[ -e ]
é um operador que verifica se "$file"
existe. É equivalente a test -e $file
mas adequado para if-else-fi.
Veja teste de homem se precisar de mais operadores.
Editar:
Para mais detalhes, existem também outros códigos de saída que você pode usar por conveniência, supondo que você tenha um aviso de e-mail diferente para quando o script "explode" ou não é executado por algum motivo.