Se um comando for executado com sucesso no Bash, ele terá um código de saída 0. Para o comando não encontrado, o código de saída é 127. Portanto, podemos usar o código de saída para executar uma ação específica.
Este tutorial fornecerá algumas dicas e truques que você pode usar para executar uma ação com base no código de saída do comando anterior.
Usando o operador ou
Uma maneira de executar um comando se o comando anterior falhar é usar o operador ou o operador. Como um operador ou requer apenas uma condição para ser verdadeira, podemos executar a seguinte sintaxe:
$ comando1 || Commad2Na sintaxe acima, o segundo comando será executado, mesmo que o primeiro comando falhe. Observe que isso é diferente de usar o operador &&, pois exige que o primeiro comando seja executado com sucesso.
Por exemplo:
$ ping -c lhint || eco "sucesso";No exemplo acima, o Echo ainda será executado, apesar do erro causado pela resolução de nomes no comando ping.
Aqui está uma captura de tela ilustrando isto:
OBSERVAÇÃO: Você pode amarrar vários comandos usando operadores de bash para alcançar o melhor resultado. Por exemplo, você pode permitir que o sono seja executado apenas se o ping e o eco executar com sucesso.
$ ping -c 1 linuxhint.com && echo "sucessor" || sono 100;No exemplo acima, se o ping ou o eco falhar, o sono não executa.
Fazer isso pode ser útil se o comando a seguir se deparar com a saída do comando anterior.
Usando o código de saída
Bash nos permite obter o código de saída do comando executado anteriormente. Para visualizar o código de saída, digite o comando:
$ echo $?Recebemos 0 para um comando executado corretamente e 127 para um comando não encontrado no exemplo acima.
Para usar o código de saída para uma ação, fazemos:
#!/BIN/BASHNo script acima, verificamos se o código de saída é igual a 0, indicando o comando executado com sucesso. Se for verdade, execute um comando. Nesse caso, eco “sucesso."Caso contrário, echo" falha.”
Conclusão
Neste tutorial rápido, usamos operadores de bash e códigos de saída para executar um comando se o comando anterior falhar ou for bem -sucedido.