421 Views
Tempo de leitura: 2 MinutosHá quem diga que existem duas formas para se fazer algo; a forma correta e a forma errada.
Em se tratando de Linux, digo que há uma vertente na forma correta: a forma correta e com elegância.
O Linux é flexível ao ponto de nos permite realizar tarefas de várias formas distintas.
Vou falar um pouco sobre operadores lógicos, o que nos permitem várias linhas de código, ciclos de CPU e consumo desnecessário de memória, além do nosso precioso tempo.
Os operadores lógicos são:
&& | Só executa o comando2 se o comando1 for bem sucedido |
|| | Só executa comando2 se o comando1 for mal sucedido. |
Operador lógico “&&”
O Operador “&&” representa um “E” lógico, de forma que só executará o comando seguinte se o comando anterior for bem sucedido.
Portanto, para que todos os comandos sejam executados, é preciso ter êxito em todos eles.
Exemplo:
grep fulano /etc/passwd && mkdir /home/fulano
No exemplo anterior, é verificado se o usuário “fulano” exite no sistema. Se sim, é criado o diretório “/home/fulano”. Caso o usuário não exista, o comando “mkdir” simplesmente não será executado.
Vejamos como faríamos isso em um Shell Script:
#!/bin/bash if [ $(grep fulano /etc/passwd) ]; then mkdir /home/fulano fi
Note que se trata de um exemplo simples. Em alguns casos mais complexos, com uso de comandos como “sed”, “awk”, entre outros, a quantidade de linhas de código poupadas chega a ser enorme.
Operador lógico “||”
O Operador “||” representa o “Ou” lógico. Portanto, executará os comandos até que um dos comandos seja bem sucedido. Assim que tiver uma saída com sucesso, interrompe a sequência de comandos.
Exemplo I:
grep fulano /etc/passwd || grep sicrano /etc/passwd || grep beltrano /etc/passwd
Aqui serão consultados 3 usuários no arquivo “/etc/passwd” com 3 “grep”. Porém, a sequência é interrompida caso o primeiro usuário seja localizado.
Para se ter ideia do quanto isso é prático, vejamos um Shell Script que faria essa mesma ação:
#!/bin/bash fulano="$(grep fulano /etc/passwd)" sicrano="$(grep sicrano /etc/passwd)" beltrano="$(grep beltrano /etc/passwd)" if [ ! -z $fulano ]; then echo $fulano elif [ ! -z $sicrano ]; then echo $sicrano elif [ ! -e $beltrano ]; then echo $beltrano else echo "usuarios nao encontrados" fi
Exemplo II:
dpkg -l pacote || apt-get instal pacote -y --force-yes
No exemplo acima, verifico se “pacote” está instalado. Se o comando “dpkg” não for bem sucedido, significa que o “pacote” não está instalado, e neste caso executará o “apt-get” para instalá-lo.
Conclusão
Dominar esses operadores é simples e muito prático, requisito pra quem trabalha na tela preta do Linux.