Compreensão do Bash If Else e Outras Declarações Condicionais

Escrever um script Bourne Again Shell (Bash) pode ser uma experiência gratificante, especialmente quando você adiciona lógica a ele, garantindo sua robustez. Uma maneira de incorporar essa lógica, tornando seu script mais inteligente, é através do uso de declarações condicionais, especificamente ‘bash if else’.

Nesta análise profunda, você está prestes a compreender o poder e as nuances das declarações if-else e case do Bash. Isso o ajudará a criar scripts Bash inteligentes e sem erros. Também vamos adicionar algumas melhores práticas para garantir que você esteja escrevendo scripts como um profissional.

Animado? Aprofunde-se e eleve seu conhecimento em scripting Bash!

Preparando o Terreno: Pré-requisitos

Para aproveitar ao máximo este tutorial, há alguns requisitos essenciais que você deve ter em mãos:

  • A Linux or Windows system armed with Bash. For those on Windows, the Windows Subsystem for Linux (WSL) is your best bet.
  • A code/text editor to write and refine your ‘bash if else’ scripts.

Por Que Você Deve Usar Declarações bash if else?

Por que as declarações condicionais são tão reverenciadas na escrita de scripts Bash? Simplificando, elas dotam seus scripts com capacidades de tomada de decisão com base em condições predefinidas.

Por exemplo, você pode usar ‘bash if else’ para verificar se um arquivo existe antes de tentar excluí-lo. Alternativamente, você pode querer verificar se um usuário possui as permissões necessárias antes de permitir que eles acessem um recurso.

Inserir scripts com estruturas ‘bash if else’ não apenas amplifica sua flexibilidade, mas também sua eficácia. Imagine um script projetado para limpar todos os arquivos em uma pasta. Usando ‘bash if else’, você pode excluir cirurgicamente apenas aqueles arquivos com mais de 30 dias, preservando o restante.

Entrando na Declaração ‘bash if else’

Agora, deixemos a introdução de lado e coloquemos a mão na massa. Vamos começar com uma das declarações condicionais mais universalmente aceitas: a declaração ‘bash if else’.

No seu cerne, o ‘bash if else’ é um portal para inserir condicionais em seus scripts Bash. Observe sua sintaxe elegante abaixo:

  • Começa com a palavra-chave if, seguida pelas condições encapsuladas dentro de [[ ]]. Em seguida, o código que reside dentro da declaração ‘bash if else’ é executado, concluindo com a palavra-chave fi.
  • A palavra-chave then segrega a condição das ações (ou declarações) que são executadas quando as condições são satisfeitas. Este bloco de ação pode abranger várias linhas, separadas por ponto e vírgula (;).
if [[ condition ]]; then
	statement
fi

Imagine a criação de um sistema de login. Ele solicita o nome de usuário correto antes de conceder acesso:

1. Inicie seu terminal e inicie um novo arquivo bash_if_demo.sh utilizando seu editor de texto preferido. Este será nosso playground para entender as declarações ‘bash if else’.

nano bash_if_demo.sh

2. Incorpore o exemplo de ‘bash if else’ fornecido abaixo no seu arquivo bash_if_demo.sh. Uma vez inserido, salve as modificações e saia do editor.

O script de exemplo ‘bash if else’ solicita um nome de usuário. Se o nome de usuário esperado for inserido, uma mensagem de boas-vindas é exibida, complementada pela data e hora atuais.

Manter um registro da data e hora das tentativas de acesso do usuário pode ser inestimável para análises futuras.

A linha introdutória #!/bin/bash (comumente conhecida como shebang) direciona o sistema sobre o interpretador a ser utilizado para processar o código subsequente no script. Aqui, ‘bash’ é o nosso interpretador escolhido.

#!/bin/bash
# Imprime uma pergunta na tela.
echo "Whats your name?"
# Captura a entrada do teclado, armazenando-a na variável $NAME
read NAME
# Inicia a declaração 'bash if else' - examina se o valor em $NAME 
# corresponde a "ATA". Se houver uma correspondência, o código contido é executado. Se não, é ignorado.
if [ $NAME == "ATA" ]
then
  # Exibe uma mensagem apenas se o valor em $NAME for igual a "ATA".
  echo "Welcome back ATA!"
fi
# Fora do 'bash if else', isso sempre mostra a data e hora atuais.
date

3. Agora, vamos colocar nosso script ‘bash if else’ à prova. Execute o comando abaixo:

bash bash_if_demo.sh

Lembre-se, independentemente da variante do shell Bash que você está usando, prefixe o nome do seu script com ‘bash’. Isso garante que o sistema utilize o Bash para a execução do script.

Digite “ATA” e pressione Enter. O resultado deve se assemelhar ao seguinte:

Demonstration of the bash_if_demo.sh ‘bash if else’ Script

Se você inserir algo diferente de “ATA”, a mensagem de boas-vindas não será exibida na saída. Apenas a data e hora atual serão mostradas. Esse comportamento é atribuído à declaração ‘bash if else’, que verifica uma correspondência precisa com o valor na variável $NAME.

Observe que as declarações ‘bash if else’ são sensíveis a maiúsculas e minúsculas. Portanto, “ata,” “aTa,” “Ata,” e assim por diante, são distintos de “ATA.”

Outcome on Entering a Non-matching Value

Teste consistentemente seus scripts ‘bash if else’ com entradas variadas. Isso garante que os scripts funcionem conforme o esperado.

Aprofundando: Declarações ‘bash if else’ Aninhadas

Você já entendeu os fundamentos de criar declarações ‘bash if else’. Embora esse conhecimento básico seja suficiente para tarefas simples, scripts complexos frequentemente exigem construções avançadas. É aqui que entram em cena as declarações ‘bash if else’ aninhadas. Basicamente, é uma declaração ‘if’ que abriga uma ou várias declarações ‘if’ adicionais.

A estrutura abaixo ilustra a sintaxe básica para declarações ‘bash if else’ aninhadas. Aqui, a cláusula externa if [[ condições ]] engloba o código executável apenas quando a condição é atendida. Em nosso contexto, o código aninhado é outra declaração ‘if’.

  • if [[ condições ]] – Isso representa o comando externo ‘bash if else’. O código aninhado (outro comando ‘if’) só é executado se a condição declarada for verdadeira.
  • if [[ condição2 ]] – Isso representa a cláusula interna ‘bash if else’. Ele contém o código que é executado somente se ambas as condições forem satisfeitas.
if [[ conditions ]]; then
	if [[ condition2 ]]; then
		statement
	fi
fi

Vamos aprofundar mais. Aprimorando nosso exemplo anterior de ‘bash if else’, agora incluiremos um comando if que questiona sobre uma senha:

1. Primeiro, estabeleça um novo arquivo intitulado bash_nested_if_demo.sh usando seu editor de texto favorito.

nano bash_nested_if_demo.sh

2. Transfira o código ‘bash if else’ fornecido abaixo para o arquivo bash_nested_if_demo.sh, salve suas alterações e feche o editor.

Este código ‘bash if else’ solicita tanto um nome quanto uma senha. Se as condições para o nome e a senha estiverem alinhadas, uma mensagem específica é exibida. Se não houver correspondência, a saída exibirá apenas a data e hora atuais.

#!/bin/bash
# Apresenta uma mensagem solicitando um nome de usuário.
echo "Whats your name?"
# Coleta a entrada do usuário.
read NAME
# Inicia a declaração 'if else' bash para verificar se $NAME corresponde a "ATA".
if [ $NAME == "ATA" ]
 then
 # Faz uma pergunta subsequente, desta vez para uma senha.
 echo "Password?"
 # Captura a entrada da senha.
 read Password
   # Aninhado 'if else' bash - Verifica se a $Senha corresponde a "pwd123".
   if [ "$Password" == "pwd123" ]; then
     # Exibe uma mensagem se ambas as condições relacionadas ao nome e senha forem atendidas.
     echo "You've successfully logged in as ATA."
   fi
fi
# Destaca a data e hora atual.
date

3. Agora, vamos ver este script ‘if else’ bash em ação. Execute o comando abaixo:

bash bash_nested_if_demo.sh

Para resultados ótimos, insira ATA como o nome de usuário e pwd123 como a senha.

Demonstrating the bash_nested_if_demo.sh Script in action

Se suas entradas divergirem de “ATA” ou “pwd123”, o único feedback que você receberá será sobre a data e hora atual. Isso ocorre porque a estrutura ‘if else’ bash exige o cumprimento de ambas as condições.

Validating if entered conditions are met using ‘bash if else’

Decodificando Declarações ‘If Else’ Bash

As declarações ‘if else’ bash são fundamentais em scripts Bash, fornecendo capacidades decisivas para seus scripts. No entanto, é crucial entender que o uso de declarações ‘if’ não é isento de desvantagens.

O desafio evidente é que a dependência excessiva do ‘if’ pode tornar seu código confuso, tornando-o tedioso e desafiador, especialmente quando múltiplos ‘if’ aninhados entram em jogo. Tais scripts correm o risco de se tornarem um “código espaguete”, caracterizado por uma legibilidade reduzida e uma complexidade aumentada.

Então, como você simplifica seu script ‘bash if else’ para permanecer compreensível? Opte por declarações ‘if else’ em vez de um monte de ‘if’ aninhados. A palavra-chave ‘else’ oferece a conveniência de especificar um bloco de código a ser executado se a condição ‘if’ não for atendida.

Para uma perspectiva mais clara, considere a sintaxe para ‘Bash If Else’ abaixo, onde:

  • if [[ condições ]] – Aqui, a declaração ‘bash if else’ inclui o código (declaração1) que é acionado apenas quando a condição declarada é válida.
  • else – Isso faz parte da estrutura ‘bash if else’. A declaração else engloba o código (declaração2) que é executado quando a condição na cláusula if anterior não é satisfeita.
if [[ conditions ]]; then
	statement1
else
	statement2
fi

Imagine criar um jogo simples de ‘bash if else’ onde o sistema espera um número aleatório do usuário:

1. Comece construindo um novo arquivo chamado bash_if_else_demo.sh.

nano bash_if_else_demo.sh

2. Integre o código ‘bash if else’ subsequente em seu arquivo bash_if_else_demo.sh, salve as alterações e depois saia.

O código subjacente ‘bash if else’ solicita ao usuário seu número da sorte. Se a entrada for par, exibe a mensagem ‘Você ganhou!’. Pelo contrário, um número ímpar aciona a saída ‘Você perdeu!’.

#!/bin/bash
# Transmite um pedido para o dígito da sorte do usuário
echo -n "Input Your Lucky Number:"
# Aceita o número inserido.
read var
# Condição 'bash if else' para verificar se o valor é par.
if [ $((var%2)) == 0 ]; then
 # Anuncia uma vitória se a condição for atendida
 echo "You Won with 'bash if else'!"
else
 # Anuncia uma derrota se a condição não for atendida
 echo "You Lost using 'bash if else'!"
fi

3. Para testemunhar o script ‘bash if else’ em operação, execute o comando abaixo:

bash bash_if_else_demo.sh

Ao inserir um dígito par, você deverá ver a mensagem “Você ganhou com ‘bash if else’!”. Ao contrário, inserir um dígito ímpar deverá resultar no feedback “Você perdeu usando ‘bash if else’!”.

Run the ‘bash if else’ game, bash_if_else_demo.sh Script

Para enriquecer o script ‘bash if else’, considere incorporar um segmento que determine se o usuário insere uma letra ou um caractere distinto em vez de um número.

Decodificando ‘Bash If Else’ e Declarações de Caso

Neste momento, você explorou alguns métodos para tomar decisões em seus scripts Bash, nomeadamente as declarações ‘bash if else’. Mas o Bash oferece outra abordagem para a tomada de decisões – a declaração case.

Assim como o ‘bash if else’, a declaração case é hábil em especificar sequências de código a serem executadas com base em condições especificadas. Uma vantagem notável da declaração de caso é sua concisão e clareza, especialmente quando comparada a cenários aninhados de ‘bash if else’.

Para compreender completamente a alternativa ‘bash if else’, vamos mergulhar na sintaxe da instrução case:

  • case $VAR in – Este segmento da construção case avalia a variável $VAR em relação a padrões definidos até que uma correspondência seja encontrada.
  • padrão1) e padrão2) – Estes são os critérios a serem testados, e uma vez que uma correspondência é detectada, o código correspondente (declaração1 ou declaração2) entra em ação.
  • esac – Conclui a estrutura case.
case $VAR in
pattern1)
    statement1
    ;;
pattern2)
    statement2
    ;;
esac

Imagine que você está projetando um script ‘bash if else’ onde os usuários inserem os nomes de seus países e, em resposta, o script exibe o idioma predominante desse país.

1. Comece gerando um arquivo chamado bash_case_demo.sh.

nano bash_case_demo.sh

2. Incorpore o código ‘bash if else’ fornecido abaixo em seu arquivo bash_case_demo.sh, salve e saia.

O script ‘bash if else’ resultante solicitará ao usuário o nome de seu país e, com base nos padrões ‘case’, imprimirá o idioma principal falado no país mencionado.

3#!/bin/bash
# Interroga o usuário sobre seu país de residência
echo -n "In which country do you reside?"
# Captura a resposta do usuário.
read var
# Revela o idioma padrão no país selecionado pelo usuário ($var),
# confiando nos padrões dentro da estrutura 'case'.
echo -n "The official language of $var is "

# A declaração 'bash if else' avalia se a entrada do usuário ($var) está alinhada com os padrões.
case $var in
# Estabelece padrões que revelam o idioma principal do país escolhido pelo usuário.
 US)
  echo -n "English"
  ;;

 Canada)
  echo -n "English and French"
  ;;

 Algeria | Bahrain | Egypt| Jordan)
  echo -n "Arabic"
  ;;

 *)
  echo -n "unknown"
  ;;
esac

3. Para experimentar este script ‘bash if else’ em primeira mão, utilize o comando subsequente:

bash bash_case_demo.sh

Você perceberá que o script destaca com precisão o idioma de acordo com o país escolhido pelo usuário.

Se o país fornecido não corresponder aos padrões estipulados, o padrão (*) padrão é acionado, resultando na saída “desconhecido.”

Illustrating the functionality of the bash_case_demo.sh Script

Conclusão das Declarações Condicionais Bash

Neste guia, você embarcou na jornada de compreensão do ‘bash if else’ e outras declarações condicionais em Bash. Desde a simples declaração ‘if’ até as intrincadas declarações ‘if-else’ e ‘case’, você agora está equipado com ferramentas essenciais para a elaboração eficaz de scripts Bash.

Com esses fundamentos de ‘bash if else’ sob seu domínio, você pode construir scripts Bash com mais proficiência, reduzindo a margem de erros.

Mas lembre-se, isso é apenas a ponta do iceberg. Bash oferece uma vasta gama de declarações condicionais. Talvez, considere se aprofundar na declaração elif do Bash e nos operadores &&, OR e || para insights mais profundos. Com dedicação, dominar a elaboração de scripts em Bash em breve estará ao seu alcance!

Source:
https://adamtheautomator.com/bash-if-else/