A questão é bastante direta. Eu posso obter o código de saída do comando anterior usando $?
. Mas o que exatamente é isso?
Eu não acho que seja uma variável, porque você não pode ter caracteres especiais no nome da variável além de _
.
foo?foo=10
resultará no erro: foo?foo=10: command not found
Então, se não é uma variável, o que é? Existem outros assim?
command-line
bash
daltonfury42
fonte
fonte
Respostas:
O que é isso?
$?
é uma variável interna que armazena o status de saída de um comando, função ou do próprio script.$?
lê o status de saída do último comando executado. Após o retorno de uma função,$?
fornece o status de saída do último comando executado na função. Essa é a maneira de Bash atribuir às funções um "valor de retorno". Retorna0
com sucesso ou um número inteiro no intervalo1 - 255
em erro.Existem outros também?
Sim, existem várias variáveis internas no bash. Você pode ver uma lista aqui . Consulte: http://www.tldp.org/LDP/abs/html/exit-status.html
fonte
dash
,ksh
,zsh
, entre outros).$status
para o mesmo propósito$?
é uma variável, mas especial, é por isso que caracteres especiais são permitidos.($?)
Expande para o status de saída do pipeline de primeiro plano executado mais recentemente.Não é o único, o shell trata vários parâmetros especialmente. Esses parâmetros podem ser referenciados apenas; a atribuição a eles não é permitida:
Fontes:
fonte
"$*"
não são apenas todos os parâmetros posicionais como uma única palavra, mas todos os parâmetros posicionais separados pelo primeiro caractere deIFS
como uma única palavra. Como o resultado estará sujeito à divisão do campo se não estiver entre aspas, o efeito é como se$@
fosse usado no caso entre aspas .$?
é um parâmetro especial do shell (variável).Em geral, todas as variáveis definidas pelo usuário devem ser nomeadas usando apenas os caracteres da classe de caracteres,
[:alnum:]
ou seja,[a-zA-Z0-9_]
(também não é possível começar[0-9]
).Em poucas palavras,
$?
é uma variável especial ( e há algumas delas ) que pode ser considerada como recurso interno do próprio shell que fornece o código de saída do comando anterior (com êxito ou com falha).Você pode ler isso para ter uma idéia melhor das variáveis.
fonte
$?
é uma variável especial no bash que sempre mantém o código de retorno / saída do último comando executado.Você pode visualizá-lo em um terminal executando
echo $?
.Os códigos de retorno estão no intervalo [0; 255]
Um código de retorno
0
geralmente significa que está tudo ok.Outros valores indicam erros. A maioria dos aplicativos retorna
1
ou valores personalizados. Se um comando não foi encontrado, a variável geralmente contém127
Se você deseja definir essa variável para um valor específico, é possível fazer isso facilmente
bash -c "exit 5"
para retornar, por exemplo, o código de retorno5
.fonte
setstatus() { return 5; }