Como usar os operadores lógicos && e || no Linux

Você que usa Linux no dia-a-dia, seja no desktop ou servidor, provavelmente já precisou executar dois ou mais comandos em sequência, certo? Nesse caso você poderia esperar a finalização de um e em seguida executar o outro ou então usar && ou ||. Veja neste artigo como usar os operadores lógicos && e ||.


Uso do &&

Usamos && para executar o próximo comando somente se o primeiro tiver tido sucesso.

Veja o exemplo abaixo:

$ tail -n1 access.log && echo "Hello Coffops"

Saída:
cesar@coffops-labs:~$ tail -n1 access.log && echo "Hello Coffops"
135.125.246.110 - - [14/Apr/2022:13:51:47 +0000] "GET /.env HTTP/1.1" 404 197 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"
Hello Coffops
cesar@coffops-labs:~$

Veja que os dois comando foram executados, o tail mostrou uma linha do log e o echo exibiu a frase.

Agora vamos fazer um exemplo no qual o primeiro comando irá falhar, portanto o segundo não será executado.

$ tail -n1 xxxxxxx.log && echo "Hello Coffops"

Saída:
cesar@coffops-labs:~$ tail -n1 xxxxxxx.log && echo "Hello Coffops"
tail: cannot open 'xxxxxxx.log' for reading: No such file or directory
cesar@coffops-labs:~$

É isso aí. Como o arquivo xxxxxxxxx.log não existe, o tail falhou e, portanto, o echo também não foi executado.

Vou te dar um exemplo prático de uso: Imagine que você quer fazer uma alteração no banco de dados, mas quer garantir que seja feito um dump antes. Nesse caso você usaria algo do tipo:

$ /opt/scripts/backup.sh && python /opt/scripts/update_db.py

Uso do ||

Ao contrário do &&, o || é usado para executar o próximo comando somente se o anterior falhar.

Veja o exemplo a seguir:

$ tail -n1 access.log || echo "Hello Coffops"

Saída:
cesar@coffops-labs:~$ tail -n1 access.log || echo "deu certo"
135.125.246.110 - - [14/Apr/2022:13:51:47 +0000] "GET /.env HTTP/1.1" 404 197 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"
cesar@coffops-labs:~$

O arquivo access.log existe, portanto o comando tail foi executado com sucesso, por esse motivo o comando echo não foi executado.

Agora vamos simular a situação em que o primeiro comando falha e, dessa forma, o segundo deve ser executado.

$ tail -n1 xxxxxxx.log || echo "Hello Coffops"

Saída:
cesar@coffops-labs:~$ tail -n1 xxxxxxx.log || echo "Hello Coffops"
tail: cannot open 'xxxxxxx.log' for reading: No such file or directory
Hello Coffops
cesar@coffops-labs:~$

Show de bola. O comando echo foi executado pois o tail falhou.


Conclusão

Este operadores lógicos podem ser úteis em scripts de automação de tarefas do seu Linux ou ainda executados manualmente no terminal para tarefas pontuais. Em resumo:

&& – Executa o comando somente se se o anterior der certo.

|| – Executa o comando seguinte somente se o anterior falhar.

Curte Linux? Então veja mais conteúdo no site da Coffops e também no nosso canal do Youtube.

Deixe um comentário

O seu endereço de e-mail não será publicado.