Escribir registro para una declaración falsa de una condición if que devuelve la salida 2

Escribir registro para una declaración falsa de una condición if que devuelve la salida 2

Tengo un script que se ejecuta cada 5 minutos con dos salidas en una cláusula de condición.

#!/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

¿Cómo podría especificar que solo se escriba un registro al salir 2? ¿Podría ser esto posible en crontab?

5 * * * * /home/user/script.sh >> script.log 2>> script.err

he entendido que " >> script.log "escribe toda la devolución del guión y" 2 >> script.err "escribe solo si el script no se ejecutó correctamente. Así que no sé si existe la posibilidad de escribir solo en la salida 2 del script.

Respuesta1

Para escribir su error para stderrusar la 1>&2redirección:

echo "Current year is not $date" 1>&2

exit [number]está especificando un código de retorno de [number].

Ver también:

Descriptores de archivos

Corrientes estándar

Todo sobre la redirección

Respuesta2

Podrías usar logger( man logger) porque se ejecuta desde cron. Y realmente no necesitas los códigos de salida porque no estás haciendo nada con ellos, al menos en el fragmento anterior.

#!/bin/bash
DATE=$(date +%Y)
if [ $DATE -ne '2014' ]; then
    logger -f script.log "Current year is not $date"
fi

información relacionada