Por que as atribuições de variáveis bash afetam o último código de saída $? e onde isso é documentado?

2

Fiquei surpreso ao descobrir que a configuração de uma variável de ambiente modificava a última variável de código $? :

$ false
$ echo $?
1
$ false
$ FOO=BAR
$ echo $?
0
$ 

O manual do bash diz apenas sobre o $? :

($?) Expands to the exit status of the most recently executed foreground pipeline.

Onde o código de saída de uma variável está sendo documentado? Pode falhar?

    
por Steve 16.08.2016 / 22:10

1 resposta

3

A atribuição pode falhar se a expressão direita não avaliar

por exemplo

$ x=HELLO
$ x=$((1/0))
bash: 1/0: division by 0 (error token is "0")
$ echo $?
1 

Neste cenário, o valor de $x é deixado inalterado:

$ echo $x
HELLO
    
por 16.08.2016 / 22:16