No meu terminal imprimiu um número aparentemente aleatório 127
. Acho que está imprimindo o valor de alguma variável e para verificar minha suspeita, defini uma nova variável v=4
. Executar echo $?
novamente me deu 0
como saída.
Estou confuso, pois esperava que 4 fosse a resposta.
De
man bash
:echo $?
retornará o status de saída do último comando. Você entendeu127
que é o status de saída do último comando executado com algum erro (provavelmente). Comandos na conclusão bem-sucedida saem com um status de saída de0
(muito provavelmente). O último comando deu saída0
desde queecho $v
a linha anterior terminou sem erro.Se você executar os comandos
Você obterá a saída como:
Tente também:
Você vai conseguir
0
.Você vai conseguir
1
.O
true
comando não faz nada, apenas sai com um código de status0
; e ofalse
comando também não faz nada, apenas sai com um código de status indicando falha (ou seja, com código de status1
).$?
é útil em shellscripts como forma de decidir o que fazer dependendo de como o comando anterior funcionou (verificando o status de saída). Podemos esperar que o status de saída seja0
quando o comando anterior funcionou (concluído com sucesso), caso contrário, um valor numérico diferente de zero.Exemplo de demonstração:
Você pode perguntar como executar um shellscript bash sem Unix ou Linux ;-)