O que significa “$?” no shell?

6

Estou usando o Debian 6.0. Conheço os argumentos normais da linha de comandos, mas não consegui encontrar para que $? se destina? Alguém tem uma idéia do que significa $? no shell do Linux?

    
por BloodPhilia 23.05.2011 / 08:35

4 respostas

15

bash , não shell . (Bash é apenas uma das várias camadas possíveis. É a mais comum)

Significa o código de saída do último comando executado.

Veja aqui: link e aqui link

    
por 23.05.2011 / 08:36
5

Para shells que suportam esta variável de shell "$?" contém o código de retorno de um comando executado mais recentemente.

Então, se você estiver executando o programa "abc", que retorna 1 ao sair,

$ echo $?

dá "1" - o código de retorno.

E não está disponível apenas no bash, também outros shells têm esse recurso.

    
por 23.05.2011 / 08:39
2

O código de retorno do último programa executado.

    
por 23.05.2011 / 08:36
0

Uau, eles mencionaram que é o código de retorno do último programa executado, mas ninguém mencionou que, se for mais de 0, provavelmente está indicando um erro. É prática geral que, quando um programa ou script é executado sem erro, ele retorna um valor de 0 para indicar que ele foi concluído sem erros. Nem todos os programas e scripts fazem, mas devem.

Verificando o valor de $? depois de executar um comando linux deve dizer se houve erros ou não. Verifique os documentos de cada programa para saber quais são os possíveis valores de retorno. Alguns não retornam um valor, mas a maioria faz. Em seus scripts, você deve terminar com 'return X', onde X é algum valor 0 = bom / nenhum erro e qualquer coisa maior que zero indica que algum problema ocorreu. Mesmo se tudo que você usa são valores de 0 ou 1, é uma boa prática. Isso permite que outros scripts saibam se a próxima linha / comando deve ser executada com base no sucesso ou falha do último comando. Isso cria um roteiro mais inteligente e um melhor controle.

    
por 27.06.2011 / 19:43

Tags