Eu quero saber o que é o exit 99 e por que alguém o usaria e quais são seus significados usos.
Por exemplo , Estou usando exit 99
.
Comentários
- Resposta muito semelhante a SO: " Por que retornar um errno negativo? (Por exemplo, return -EIO) "
Resposta
Não há significado em sair com o código 99, exceto talvez no contexto de um programa específico.
De qualquer maneira, exit
sai do shell com um determinado código de saída, neste caso, 99. Você pode encontrar mais informações em help exit
:
exit: exit [n] Exit the shell. Exits the shell with a status of N. If N is omitted, the exit status is that of the last command executed.
Comentários
- Se desejar fazer algo específico com um código de retorno como o do bash, use o
$?
para chegar até ele. - Não exatamente – 99 não é zero e, portanto, indi indica que o programa falhou por algum motivo.
- @psusi Existem muitos códigos de saída diferentes de zero em aplicativos que não têm a ver com falha, mas indicam outras condições de execução (muitos programas os usam para indicar falsidade ou execução não ideal em vez de falha, por exemplo). Para afirmar que um determinado status de saída deve indicar falha sem saber que o programa simplesmente não é verdadeiro. Eu ganhei ' t especular sobre o significado de " 99 " em algum programa desconhecido.
- O shell e a maioria das outras ferramentas, incluindo make, tratam qualquer valor de saída diferente de zero como um erro.
- Exceto por estes apenas indicam falha isolada, não em um contexto maior de verificação para veracidade. De qualquer forma, recuso-me a especular sobre o significado de algum código de saída quando o aplicativo não está definido.
Resposta
Além de @Chris Down, há alguns códigos de retorno reservados para o shell, eles têm um significado especial:
RETVAL Meaning 1 General errors 2 Misusage 127 Command not found
Você pode se referir a isto para mais detalhes.
Comentários
- @MrLister: Sim, meu mistypo, corrigido!
- ainda há um
s
ausente (" Misuage "?)
Resposta
Normalmente, se você terminar seu script em algum ponto com:
exit 0
O shell receberá um 0 como o código de retorno . Este zero significa que tudo estava OK .
No entanto, se seu programa encontrou alguma condição de erro, você deve sair com um código de retorno diferente de zero, para informar ao shell que algo deu errado. Se você não quiser ser mais específico, pode simplesmente usar 1.
exit 1
Você pode, no entanto, informar o shell de tipos específicos de falhas usando outros números. Por exemplo, o próprio bash
retorna 127 para programa não encontrado . Portanto, se você documentar o comportamento do seu script, poderá fazer algo útil depois executá-lo verificando o valor da variável especial $?
, que contém o código de retorno do último programa executado.
Eu olhei para isso há um tempo atrás e encontrei que, por exemplo, o FreeBDS tinha algumas convenções muito úteis com relação aos códigos de saída, documentadas em man 3 sysexits
Comentários
- " O shell receberá um 0 como código de retorno " errado,
exit
sem parâmetros sai com o código de status do último comando executado. (consulte pub s.opengroup.org/onlinepubs/009695399/utilities/exit.html ) - Obrigado, meu equívoco de longa data resolverá a resposta.
- Ótimo, voto negativo removido 🙂
Resposta
Há uma convenção muito antiga (no Unix) para retorno- intervalos de status:
- 0 significa sucesso
- números positivos significam problemas menores, mas essencialmente a tarefa concluída
- números negativos significam erro crítico (por exemplo disco cheio, arquivo não encontrado)
Exatamente o que esses números individuais positivos e negativos significam depende do programador. Às vezes, você pode escolhê-los para compatibilidade com outros programas semelhantes (por exemplo, ferramentas Gnu). @Gnouc lista alguns.
Não, não estou ciente de qualquer significado especial para o código de saída 99, nunca o vi usado. Talvez signifique “Cerveja insuficiente”
Veja:
- resposta para SO: “Por que retornar um errno negativo? (por exemplo.return -EIO) “ também
- mostra a lista de códigos de erro Unix padrão retirados de errno.h , embora sejam positivos .
Comentários
- Nunca ouvi falar dessa convenção Unix. E suas duas referências não apóiam sua afirmação sobre essa convenção.
- A primeira referência sim. Existem 1,67 milhões de resultados do Google em números negativos positivos de status de retorno unix .
- Há um pequeno número de valores de retorno negativos especificados em POSIX.1 mas estes são para APIs de programação
Resposta
Alguns programadores fornecerão muitos códigos de erro diferentes começando com 1. Novas versões podem introduzir novos códigos de erro específicos, então qual código deve ser usado para
“todos os outros erros / erro não especificado”? Os códigos de saída serão truncados em 255, então eu escolheria 99 como um “outro erro” .