crash shell: qualquer forma de verificar se um comando foi executado com sucesso

1

Estou automatizando um teste usando o pacote de falhas. Existe algo como $? , que pode ser usado para verificar se o comando anterior foi executado com sucesso ou não dentro de um shell de falha?

Por exemplo, quando o comando:

crash> bt -a

É executado, como sei se foi bem sucedido ou não? A única solução em minha mente é percorrer os resultados, mas não é confiável quando o ambiente muda.

Isso é o que recebo quando tento echo $? :

crash> bt asd
bt: invalid task or pid value: asd
crash> $?
crash: command not found: $?
crash> echo $?
0
crash>
crash> q
root@at0012-ubuntu:~/crashKernel# 

$? sempre parece ser 0.

Eu já fiz essa pergunta no superusuário há alguns dias, mas não tenho ajuda. Qualquer ajuda seria apreciada.

    
por limovala 12.06.2013 / 13:21

4 respostas

0

Desculpe - eu não entendi a pergunta original.

A resposta é não, não há como saber se um comando do utilitário de falha foi concluído com sucesso. As funções que são chamadas para executar um comando são todas as funções vazias, por exemplo, o comando "bt" é declarado da seguinte forma:

void cmd_bt (void) { ... }

    
por 13.06.2013 / 21:43
2

Como sugerido por @Anthon, este não é um shell * nix * normal como Bash ou Dash, mas sim um prompt específico de aplicativo ( q não é um utilitário interno POSIX por exemplo). De uma rápida olhada em man crash , parece que não há comando para obter o código de saída do último comando .

    
por 12.06.2013 / 14:57
0

Como @ l0b0 já esclareceu, isso não é um shell normal . Além disso, parece que não tem echo como um comando que você pode digitar no seu prompt. Comparar:

crash -h bt

com

crash -h echo

você provavelmente obteria o mesmo resultado 0 se tentasse no prompt crash> :

spam ?0
    
por 13.06.2013 / 07:30
0

O comando "bt" do utilitário de travamento dá a você o rastreamento de pilha da última entrada de uma determinada tarefa no modo kernel, seja via syscall ou exceção. Não tem noção do status de uma tarefa que não existe mais, isto é, uma que foi anteriormente executada por um shell bash.

    
por 13.06.2013 / 15:13