Como forçar a finalização anormal de um script bash


4

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 email.

O problema é que eu recebo muitos e-mails apenas dizendo que o script rodou ok.

O agendador de tarefas do DSM permite enviar o email somente se o script terminar de forma anormal.

Minha pergunta é: Como posso forçar o script a terminar de forma anormal?

Eu faria isso para obter um email se o arquivo que estou procurando não existe.

Respostas:


4

Você pode usar exit 1 para terminar o script.

Código de saída 0 significa que tudo correu bem, todos os outros indicam algum tipo de erro.


2

Você poderia usar um código de saída se o arquivo estiver faltando:

#!/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.
Vejo teste de homem se você precisar de mais operadores.

Editar:
Para elaborar mais, há também outros códigos de saída que você pode usar por conveniência, supondo que você tenha um aviso de email diferente para quando o script "explode" ou não é executado por algum motivo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.