Para escrever seu erro para stderr
use o 1>&2
redirect:
echo "Current year is not $date" 1>&2
exit [number]
está especificando um código de retorno de [number]
.
Veja também:
Eu tenho um script sendo executado a cada 5 minutos com duas saídas em uma cláusula de condição.
#!/bin/bash
date=$(date +%Y)
if [ $date -eq '2014' ]
then
echo "Current year is $date"
exit 0
else
echo "Current year is not $date"
exit 2
fi
Como eu poderia especificar para escrever somente um log quando sair 2? Isso poderia ser possível no crontab?
5 * * * * /home/user/script.sh >> script.log 2>> script.err
Eu entendi que "> > script.log" escreve todo o retorno do script e "2 > > script.err" escreve somente se o script não foi executado corretamente. Então eu não sei se há uma chance de escrever somente onde exit 2 no script.
Para escrever seu erro para stderr
use o 1>&2
redirect:
echo "Current year is not $date" 1>&2
exit [number]
está especificando um código de retorno de [number]
.
Veja também:
Você pode usar logger
( man logger
) porque está sendo executado em cron
. E você realmente não precisa dos códigos de saída porque você não está fazendo nada com eles, pelo menos no trecho acima.
#!/bin/bash
DATE=$(date +%Y)
if [ $DATE -ne '2014' ]; then
logger -f script.log "Current year is not $date"
fi