Soy nuevo en las secuencias de comandos de shell y en escribir una secuencia de comandos con múltiples comandos rm. el script tiene que eliminar archivos en algunos directorios. Quiero capturar el estado de salida de cada comando y devolver el estado de salida si algo falla y continuar con el siguiente comando. ¿Alguien puede ayudarme a corregir mi guión?
#!/bin/bash
PATH1=mydir/folder/
PATH2=mydir/newfolder/
HOST= hostname | grep -o "[0-9]*" | head -1
case "$HOST" in
01)echo "Removing files in server 1.."
find $PATH1/logs -maxdepth 1 -mtime +30 -type f \( -name "*.log*" -o -name "*.out*" \) -exec rm -f {} \;
find $PATH1/logs -maxdepth 1 -mtime +30 -type f \( -name "*.log*" -o -name "*.out*" \) -exec rm -f {} \;
RETVAL=$?
;;
02)echo "Remove logfiles in server 02"
find $PATH2/logs -maxdepth 1 -mtime +30 -type f \( -name "*.log*" -o - name "*.out*" \) -exec rm -f {} \;
find $PATH2/logs -maxdepth 1 -mtime +30 -type f \( -name "*.log*" -o -name "*.out*" \) -exec rm -f {} \;
RETVAL=$?
;;
*)
echo "Removal of log files is complete"
esac
Respuesta1
an echo $?
debería devolver el estado del comando anterior. entonces tal vez quieras usar
if [ ! $? -eq 0 ]; then
echo "command failed"
else
echo "command success"
fi