Ao passar por um script de shell, vi o termo "$?". Qual é o significado desse termo?
linux
shell-script
Renjith G
fonte
fonte
Respostas:
$?
expande para o status de saída do pipeline em primeiro plano executado mais recentemente. Consulte a seção Parâmetros especiais do manual do Bash .Em termos mais simples, é o status de saída do último comando.
fonte
A resposta de Cjm está correta, mas
$?
pode ser usada de maneiras tolas em scripts de shell, e eu gostaria de alertar contra isso. Muitos scripts shell ruins têm um padrão repetido de código:Se possível (preocupações de legibilidade às vezes se intrometem), você deve codificar essa situação de maneira diferente:
Este último uso é mais rápido, não contamina o espaço de nomes de variáveis do shell com o que equivale a variáveis temporárias, geralmente pode ser muito mais legível para seres humanos e incentiva o uso de "lógica positiva", a prática de escrever condicionais sem negações, o que tem efeitos cognitivos. simplicidade na maioria das situações. Ele acaba com o uso de
$?
na maior parte.fonte
Além do que cjm disse , se o valor
$?
for 0, o processo anterior foi encerrado normalmente (ou com êxito). Caso contrário, houve algum erro.fonte
diff
sai com 0 se os arquivos comparados forem iguais, com 1 se forem diferentes e 2 for um erro.$?
-O status de saída do último comando executado.$0
-O nome do arquivo do script atual.$#
-O número de argumentos fornecidos para um script.$$
-O número do processo do shell atual. Para scripts de shell, esse é o ID do processo sob o qual eles estão executando.fonte
$? nos forneça o status de execução do último comando execute no prompt. O valor '0' indica que o comando foi executado com êxito e '1' é para não ter sucesso.
fonte
$?
determina o status de saída do comando executado.$
seguido por números (por exemplo$1
,$2
etc.) representa os parâmetros no script de shell.fonte