como capturar o status de retorno de cada comando de um script Shell com vários comandos [duplicado]

1

Eu sou novo em scripts de shell e escrever um script com vários comandos rm. o script tem que remover arquivos em alguns diretórios. Eu quero capturar o status de saída para cada comando e retornar o status de saída se algo falhar e prosseguir com o próximo comando. Alguém pode me ajudar a corrigir meu roteiro?

    #!/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
    
por Linux_Bee 31.10.2016 / 19:04

1 resposta

-2

um echo $? deve retornar o status do comando anterior. então você pode querer usar

if [ ! $? -eq 0 ]; then
    echo "command failed"
else
    echo "command success"
fi
    
por 31.10.2016 / 19:34

Tags