Como obter o último erro bash

2

Estou trabalhando com um projeto terrível. Ele usa muito script de shell bagunçado no fundo. O script pode incluir alguns outros scripts. E muitas saídas de erro foram redirecionadas para / dev / null. Quando um script não é executado com êxito, posso usar echo $? para ver o código de erro, mas não consigo saber qual comando retornou esse código de erro.

Esses scripts estão lá. Eu não quero rever todo o código e adicionar código extra para lidar com erros de uma forma gentil. Agora eu tenho duas perguntas aqui:

  1. É possível imprimir o último comando bash com argumentos, que não foi executado com sucesso?
  2. Como viver com esse código de script de shell confuso?
por stanleyxu2005 04.08.2013 / 16:08

2 respostas

4

Tente

bash -x /my/script

para imprimir todas as linhas do script conforme ele é executado.

Não é possível executar o script assim? Você também pode adicioná-lo ao shebang na primeira linha do arquivo.

#!/usr/bin/bash -x
    
por 04.08.2013 / 16:09
2

Como Michael disse e também costumo usar na verificação de erros para scripts bash $ LINENO - cada vez que este parâmetro é referenciado, o shell substitui um número decimal representando o número da linha seqüencial atual (começando com 1) dentro de um script. p>

Então, após determinado comando, eu faria:

 if [ $? = 0 ]; then
    echo "Command "Foo" finished successfully."
 else 
    echo "Error occurred on line $LINENO in command "Foo" with exit status  $?"
 fi

Algo parecido com isto. Espero que isso ajude.

    
por 04.08.2013 / 16:24