Assim como &&
, ||
é um operador de controle bash :
-
&&
significa executar a instrução que segue somente se a instrução anterior for executada com êxito (código de saída zero retornado).
-
||
significa executar a instrução que segue somente se a instrução anterior falhar (retornou um código de saída diferente de zero).
Alguns dos outros operadores de controle são:
-
&
significa executar a instrução anterior em segundo plano.
-
;
significa executar a instrução anterior e, após a conclusão, seguir para a próxima instrução.
-
|
significa executar a instrução anterior e conectar seu stdout ao stdin da instrução que segue.
Combinando &&
e ||
&&
e ||
podem ser combinados para fazer uma alternativa para if-then-else. Considere:
if some_command
then
echo yes
else
echo no
fi
O texto acima é semelhante a:
some_command && echo yes || echo no
Eu disse "semelhante" em vez de idêntico porque os dois são diferentes no caso de o comando echo yes
falhar. Se o comando echo yes
falhar (sair com um código de retorno diferente de zero), o comando echo no
será executado. Isso não aconteceria com a versão if-then-else-fi
. O comando echo
só falhará, no entanto, se houver um erro de gravação no terminal. Consequentemente, essa diferença raramente é importante e a forma &&
e ||
é frequentemente usada como um atalho.