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

    
por naio 21.10.2016 / 14:12

2 respostas

4

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.

    
por 21.10.2016 / 14:37
2

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.

    
por 21.10.2016 / 14:43

Tags