Certificando-se de que um comando foi executado no bash

7

Eu tenho um arquivo bash com comandos para mesclar arquivos pcap. Eu quero saber se existe alguma maneira de garantir que uma linha no bash seja executada ou não. Como no arquivo bat do Windows, temos% ErrorLevel% ¨ Diga um comando

touch -r dcn_file "${dir_dcn}"/"${TAG1_dcn}".pcap 

Como posso ter certeza de que isso foi feito?

    
por Jishnu U Nair 12.03.2014 / 13:42

2 respostas

12

Os shells são construídos para fazer esse tipo de coisa facilmente.

if touch -r dcn_file "${dir_dcn}"/"${TAG1_dcn}".pcap 
then
    echo "Command ran successfully."
else
    echo "Command had an error: $?"
fi

Ocasionalmente, você encontrará algum comando proprietário que não saia com status 0 no sucesso e não-zero na falha, mas felizmente, essas aberrações quase foram extintas.

    
por 12.03.2014 / 13:59
9

A variável bash $? mantém o status de saída da última execução do comando. Para programas típicos, o valor 0 é bem-sucedido e qualquer outro valor é falha. O código de retorno específico deve ser documentado nas páginas man dos programas em questão.

Você pode usar código como:

touch -r dcn_file "${dir_dcn}"/"${TAG1_dcn}".pcap
[ $? -ne 0 ]; then
   echo "Command failed: touch: $?"
   return $?
fi

Para testar o código de retorno, imprima uma mensagem de erro e saia do script com o mesmo código de erro.

    
por 12.03.2014 / 13:44