Jornada Shell Script: Parte 7 Trabalhando com condicionais IF, ELSE no Linux
Tema Central: Trabalhando com conditionals IF, ELSE em no Shell Script Linux
Versão 1
Emissão: 29 de julho de 2022
Validade: Indeterminada
Objetivo
Hoje, vou falar sobre instruções baseadas em execução condicional no Linux para desenvolvimento de um programa em Shell Script. Em suma, instruções condicionais se referem a uma determinada condição para que algo seja executado. Assim, trabalharemos de forma prática nesse artigo como utilizar essas instruções dentro do sistema operacional Linux.
Pré-Requisitos
Para melhor aproveitamento deste material recomendo que faça a leitura dos artigos que antecederam essa publicação. Todo material de referência é parte da Jornada Shell Script da RunbookBR.
Iniciamos com a demonstração dos comandos essenciais no Linux, onde você poderá, além de consultar os comandos mais utilizados em um sistema operacional Linux, a descrição detalhada de cada um além dos exemplos de uso para melhor entendimento de cada execução.
Seguimos com bastante conceito e demonstração prática de como utilizar variáveis de ambiente, file globbing e REGEX no Linux. Assim conseguimos explorar muitos modos de uso para trabalharmos com um ambiente dinâmico e evolutivo.
Então desenvolvemos nosso primeiro programa em Shell Script, formatando nosso arquivo, desenvolvimento nossa boa prática de documentação e claro, gerando nosso código para execução no nosso ambiente Linux.
Em seguida, trabalhamos, na prática, os conceitos de entrada e saída de status na execução de comandos no Linux. Vimos aqui uma série de situações que serão muito exploradas a partir de agora com nossas condicionais IF ELSE. Basicamente queremos fazer algo se determinado status code for apresentado. Por outro lado, podemos tomar outra ação no nosos script caso nosso status code seja alterado. Veremos detalhes desse tema na sequência do artigo.
Logo após, publicamos um artigo demonstrando como utilizar nosso shell script para receber variáveis dos nossos usuários, podendo usar assim essas variáveis dentro dos programas. O que não vimos e vamos explorar agora, por exemplo, será: e se nosso usuário enviar uma informação mal formatada?
Por fim, fizemos alguns programas simples em shell, mas de extrema importância para praticarmos e partirmos para o próximo passo da nossa Jornada com Segurança. Orientei ao fim do artigo a praticar bastante, então espero que você tenha acompanhado cada passo da Jornada antes de seguir neste artigo.
Seguiremos usando nossa máquina Linux para criação dos nossos scripts. Lembrando que estamos trabalhando com um Debian como distribuição base.
Visão Geral
Condicionais no Shell Script, são usados quando queremos dar instruções diferentes para determinadas situações predeterminadas pelo programado da instrução no Linux. Por exemplo, se alguma situação ocorre, “faça isso”. Senão “faça aquilo”. Caso uma determinada condição seja encontrada, “faça isso”. Caso contrário, “faça aquilo”. Apesar de ludicamente parecer a mesma coisa, trabalhando com “se” ou “caso”, temos instruções e formas de uso diferentes conforme veremos ao longo deste artigo.
Manual do IF ELSE
A sintaxe do comando IF deve seguir assim:
if COMANDOS_TESTE; then COMANDOS_RETORNO; else OUTROS_COMANDOS_RETORNO; fi #OUTRA SINTAXE POSSIVEL if COMANDOS_TESTE then COMANDOS_RETORNO else OUTROS_COMANDOS_RETORNO fi
Vamos entender a sintaxe acima:
- if: Tradução literal “se”, conforme já explicamos, se algo ocorrer.
- then: Tradução literal “então”. Poderíamos tratar também como “FAÇA ALGO”.
- else: Tradução literal “senão”. Ou seja, se a condição anterior não for “ENTÃO FAÇA OUTRA COISA”.
- COMANDOS_TESTE: aqui substituímos por uma lista de comandos de teste, por exemplo, VALOR1 MENOR QUE VALOR2 ou ENCONTRE ALGO.
- COMANDOS_RETORNO: são comandos que retornaram em caso dos testes retornarem com status code igual a zero.
- OUTROS_COMANDOS_RETORNO: são comandos que retornaram em caso dos testes anteriores retornarem com status code igual diferente de zero.
Vamos fazer um exemplo prática no Shell Linux
No nosso primeiro exemplo vamos executar diretamente no Shell um teste simples comparando dois valores. Perceba que para valores iguais ele exibira uma mensagem. Por outro lado, valores diferentes nos levarão a outra saída de texto.
myuser@DEVOPS:~/RunbookBR/Scripts$ if ( test 1 = 1 ); then echo VALORES IGUAIS; else echo VALORES DIFERENTES; fi VALORES IGUAIS myuser@DEVOPS:~/RunbookBR/Scripts$ if ( test 1 = 2 ) > then > echo VALORES IGUAIS > else > echo VALORES DIFERENTES > fi VALORES DIFERENTES
Preparando o ambiente
Nos artigos anteriores, preparamos nosso ambiente, com nossa estrutura de diretórios e criamos nossos programas. Vamos usar basicamente a mesma estrutura e vamos trabalhar em cima dos scripts criados anteriormente, fazendo alguns ajustes para responder a determinadas condições de uso e comportamento.
Então, para criação dos nossos programas temos como premissa que nossa máquina Linux está acessível via Putty ou console Shell. Fizemos o ajuste do nosso usuário para poder trabalhar com interpretador Shell, então logamos no sistema conforme demonstrado abaixo.
myuser@DEVOPS:/$ $ echo $0 bash
Em caso de dúvidas, acesse nossos artigos mencionados nos items de premissa deste.
Vamos validar nossa estrutura de diretórios, também previamente criada.
myuser@DEVOPS:~/RunbookBR/Scripts$ cd ~/RunbookBR/Scripts/ myuser@DEVOPS:~/RunbookBR/Scripts$ ls BemVindoAoShell.sh ListaClientes.txt MeuPrimeiroScript.sh BuscaClientes.sh ListaClientesInput.sh SomandoValores.sh InventarioNoLinux.sh ListaClientesParametro.sh
Programa: Condicional IF, ELSE, Maior ou menor que
No nosso primeiro programa presentamos uma mensagem simples de “Bem-vindo ao Mundo Shell” para o usuário que executar o programa. Hoje, vamos alterar um pouco essa mensagem, deixando uma mensagem de bom dia, se nosso horário for menor que 12 horas. Se, nosso horário estiver entre 12 horas e 17 horas, boa tarde. Senão, receberemos uma mensagem de boa noite.
myuser@DEVOPS:~/RunbookBR/Scripts$ clear myuser@DEVOPS:~/RunbookBR/Scripts$ cp BemVindoAoShell.sh BomDiaDevops.sh myuser@DEVOPS:~/RunbookBR/Scripts$ vi BomDiaDevops.sh #!/bin/bash ######################## # Programa: BemVindoAoShell.sh # Desenvolvido por: RunbookBR ([email protected]) # Data de Criacao: 18/09/2020 # Versao: 1.0.0 # Comentario Programa criado para dar as boas vindas ao novo desenvolvedor She ll ######################## # VARIAVEIS DO PROGRAMA MSGM_OUTPUT="Bem-vindo ao Mundo Shell" HORA=$(date +%H) if [ $HORA -lt 12 ]; then MSGM_BOMDIA="Bom dia"; fi if [ $HORA -ge 12 ] && [ $HORA -lt 18 ]; then MSGM_BOMDIA="Boa Tarde"; fi if [ $HORA -ge 18 ]; then MSGM_BOMDIA="Boa Noite"; fi # INICIO DO PROGRAMA clear #Limpa a tela do bash echo " ##################### Ola DevOps! $MSGM_BOMDIA $MSGM_OUTPUT ##################### " ~ ~ " :wq
Partindo da premissa que já demos permissão de execução no nosso script, vamos executá-lo.
myuser@DEVOPS:~/RunbookBR/Scripts$ ./BomDiaDevops.sh
A saída abaixo será apresentada. Perceba que agora, diferente do script original, temos uma mensagem de “bom dia”, “boa tarde” ou “boa noite” dependendo do horário do seu sistema operacional no momento.
Conclusão
Em suma, praticamos no artigo de hoje nossos comandos shell script e vimos na prática como criar alguns programas simples para automatização das nossas rotinas. Recomendo para você que vai seguir com a RunbookBR nessa Jornada, que pratique bastante os conceitos aplicados até aqui. Crie suas rotinas, por mais simples e básicas que pareçam. Ganhe familiaridade porque a partir do próximo artigo vamos esquentar as coisas, criando loopings, condicionais, funções e muita coisa legal para deixar nosso Shell Script bem montado e útil para automatização das nossas rotinas.
Conforme dito no outro artigo, estamos montando essa Jornada com bastante zelo para que você se torne, a partir do conhecimento obtido aqui, um especialista Linux, como enfase em shell script e diferenciado no mercado.
Até a próxima.