
Estou tendo dificuldade em localizar uma lista abrangente e atualizada de códigos de erro do Bash. por exemplo:
$ udevadm info /dev/sdx; echo Exit code $?
Unknown device, --name=, --path=, or absolute path in /dev/ or /sys expected.
Exit code 4
Como alguém deve procurar esses códigos de saída?
Responder1
Existem vários códigos de saída comsignificados especiais reservados:
Significado do número do código de saída 1 Catchall para erros gerais 2 Uso indevido de recursos internos do shell (de acordo com a documentação do Bash) 126 O comando invocado não pode ser executado 127 “comando não encontrado” 128+n Sinal de erro fatal "n" 130 Script finalizado por Ctrl-C 255* Status de saída fora do alcance
Tudo abaixo de 125 é um jogo justo para os desenvolvedores e só pode ser adivinhado, poisnotas l0b0 em sua resposta, lendo a man
página do aplicativo, ou o código-fonte, para determinar o que o código significa (se, de fato, estiver documentado).
Responder2
dr.Os códigos de saída são específicos da aplicação.
Existem algumas convenções soltas. false
e qualquer coisa bem-sucedida prefixada com !
(como ! true
) em shells POSIX retorna o código de saída 1, mas um desenvolvedor pode usar qualquer código de saída entre 0 e 255 para o que quiser. Em última análise, você deve consultar a documentação (na melhor das hipóteses) ou o código (na pior das hipóteses) para saber o que isso significa. Para programas com man
páginas, os códigos de saída geralmente serão listados em uma seção chamada EXIT STATUS
(ferramentas GNU como find
).
Alguns significados populares estão listados em /usr/include/sysexits.h
- tento usá-los sempre que possível. Como@AnsgarEsztermann aponta, estas não são uma referência Bash, nem mesmo uma referência de aplicativo, exceto para aqueles que optam por usá-las (desenvolvedores C/C++ principalmentede acordo com o ABS).