possible / como obter o código de retorno para um comando executado antes do último comando?

4

Linux bash (ou outro shell) Você já fat faturou "echo $?" em algo como "echo $ 4", impedindo permanentemente que você saiba o código de retorno para o comando anterior? Eu faço isso com frequência (e é muito chato), então pensei em perguntar: o bash e / ou o linux tem uma "pilha de código de retorno" ou matriz ou algo que contém os códigos de retorno dos comandos anteriores, não apenas o último? que você correu? Estou falando de comandos simples que não envolvem canos.

    
por Michael Martinez 24.10.2013 / 00:12

1 resposta

4

Se você quiser ver os códigos de retorno para o bash interativo, você pode usar a variável PROMPT_COMMAND assim:

    PROMPT_COMMAND='RC=$?; 
    if [ $RC -ge 128 ]; then
        SIG=$[RC-128];
        echo -e "Signal $SIG = $(kill -l $SIG)";
    fi;
    if [ $RC -ne 0 ]; 
        then echo -n "! (RC=$RC)  "; 
    fi'

Os comandos nesta variável são executados após cada comando. Deve conter apenas comandos internos bash. No meu exemplo, mostra o $? se não for 0 e o sinal se o comando anterior foi morto por um sinal.

    
por 24.10.2013 / 00:35

Tags