A expressão $?
é avaliada como o código de saída do comando anterior.
&&
é um separador de comando que executará o segundo comando se e somente se o primeiro comando retornar um código de saída igual a zero.
[
ou test
é uma ferramenta de shell para fazer vários testes comparativos.
Devo salientar que ==
é o teste errado para usar aqui, já que é para a comparação string ; -eq
é o teste de igualdade para a comparação numérica .
Portanto: [ $? -eq 1 ] && return 0
examinará o código de saída do comando imediatamente anterior e comparará com 1
. Se houver uma correspondência, o comando return 0
será executado (ignorando, portanto, o que presumo serem comandos subseqüentes na função em que esse teste se encontra).
A distinção entre o uso de ==
e -eq
é que [ 01 -eq 1 ]
é verdadeiro, enquanto [ 01 == 1 ]
é falso.