Eu quero salvar o status de saída do último comando executado (em um arquivo, em uma variável, isso realmente não importa), mas isso deve ser feito automaticamente em um shell interativo, executar manualmente algo como var=$?
não é uma opção.
Eu decidi tentar usar PROMPT_COMMAND
para conseguir isso. Abaixo você pode me ver provando que o que eu tentei não funcionou.
/home/exit_status$ export PROMPT_COMMAND="echo $?"
0
/home/exit_status$ rm /
rm: cannot remove ‘/’: Is a directory
0
/home/exit_status$ echo $?
1
0
Como faço para que o trecho acima funcione como eu pretendo? Eu posso descobrir como armazená-lo, não preciso de ajuda com isso. Só mencionei isso para contextualizar.
Como você usou aspas duplas,
$?
está sendo expandido quando você atribui o valor - como você pode verificar usandoset -x
:Se você alterar as aspas duplas para aspas simples, deverá obter o comportamento desejado:
ou seja
Basta colocá-lo em um var após o comando.
$u
hospedará o status até a redefinição.u=$?
.PROMPT_COMMAND
$u