Header Ads

Teste condicional no Bash: if, then, else, elif

Programar no Bash pode ser divertido às vezes. Saber como separar seus if &’ s dos seus else-if &’ s ou elif &’ s como são chamados no Bash também pode ser divertido. Descubra como acertar as condicionais do Bash.

Condicionais Bash: if, then, else, elif

Em todas as linguagens de codificação, existem condicionais – declarações condicionais que permitem testar uma variedade de situações. Na maioria das linguagens de programação, uma instrução if básica permitiria testar o status ou o valor de uma determinada variável de programação. Por exemplo, pode-se testar se uma variável está vazia ou não.

Para saber mais sobre variáveis ​​Bash, você pode consultar nosso artigo Funções Bash e variáveis ​​locais.

Bash é um shell Linux completo e uma linguagem de programação abrangente. Ele também inclui muitas extensões para as declarações condicionais mais comuns em sua linguagem de script / programação. Por exemplo, pode-se testar a presença de arquivos, para ver se uma instrução grep -q foi bem-sucedida e assim por diante.

Além disso, pode-se especificar declarações condicionais complexas e até mesmo subshells dentro da própria declaração condicional if etc. Isso torna o Bash muito adequado para disputa / mutilação de big data, análise de texto e muitas outras tarefas semelhantes ao DevOps.

Este artigo se concentrará principalmente em acertar as condicionais, usando instruções if ... then, else e elif. Um artigo futuro examinará condições de teste mais complexas, usando subshells dentro de declarações condicionais etc.

Teste condicional Bash: if.. then … fi

Escrever uma instrução condicional no Bash é fácil e direto. Você pode até mesmo escrevê-los diretamente na linha de comando do Bash, sem usar um script:

 se ["1" == "1"]; então echo 'true'; fi 

O resultado é verdadeiro, pois 1 corresponde a 1. Observe que a maneira de testar a igualdade entre os itens é usar == e não =. Esse é o caso em muitos idiomas e geralmente é feito para evitar, ou claramente separado de, “ atribuição ” (ou seja, definir uma variável para um determinado valor).

Observe também que terminamos cada instrução if condicional com uma instrução fi (o reverso de if) de encerramento. Isso nos permite especificar várias linhas após a cláusula then, antes de encerrar a seção then.

Teste condicional de Bash: senão e variáveis ​​

Vamos agora colocar isso em um pequeno script, adicionar outra seção e adicionar algumas verificações de variáveis.

Definimos test. sh da seguinte maneira:

 #! / bin / bash VAR1 = 1 VAR2 = 1 if ["$" == "$"]; então echo 'true' senão echo 'false' fi 

Em seguida, tornamos esse pequeno script executável emitindo chmod + x test. sh que define o sinalizador de executável para o script test. sh.

Dentro do script, definimos VAR1 e VAR2 com o valor 1. Em seguida, emitimos uma instrução if que compara as duas variáveis ​​e echo true se a comparação for válida, e false se a comparação falhou. O resultado é uma saída verdadeira e correta.

Teste condicional de Bash: se aninhado e verificações avançadas

Podemos expandir o último exemplo um pouco mais e verificar a desigualdade usando! = em vez de ==, adicionar loops aninhados e usar algumas verificações de variáveis ​​avançadas nativas do Bash ao mesmo tempo.

Definimos test2. sh da seguinte forma:

 #! / bin / bash VAR1 = "$" VAR2 = "$" if [! -z "$" -a! -z "$"]; então se ["$"! = "$"]; then echo 'true' else echo 'false' fi else echo "Assert: VAR1 (value: '$'), ou VAR2 (value: '$'), ou ambos, estão vazios!" fi 

Nesse script, substituímos nossos valores embutidos em código 1 para VAR1 e VAR2 por duas variáveis ​​especiais, a saber $ e $, que representam a primeira e a segunda opção / parâmetro, passados ​​da linha de comando para o script. Tornamos nosso script executável novamente e o executamos com várias combinações de opções erradas.

O código -z significa verificar se um parâmetro está vazio ou não. Negamos o resultado (ou seja, sim torna-se não e não torna-se sim, ou melhor, / melhor, verdadeiro torna-se falso e falso torna-se verdadeiro) usando um ponto de exclamação (!) Na frente da marca -z. Em seguida, também usamos uma cláusula AND (ou seja, ambos os lados da cláusula AND têm que se provar verdadeiros).

Em outras palavras, a maneira como você poderia ler o if [! -z "$" -a! -z "$"]; linha em linguagem natural é VAR1 e VAR2 não devem estar vazias. Podemos ver que nossas variáveis ​​estão sendo verificadas corretamente por esta instrução condicional, pois cada vez que tentamos passar apenas uma variável, ou duas variáveis ​​onde uma está vazia, o programa salta para a cláusula else que relata nosso uso incorreto de opções de script.

Finalmente, dentro da primeira instrução condicional if, temos uma instrução condicional secundária (jargão do computador: aninhada). Esta declaração faz nossa verificação de desigualdade usando não igual (! =). Com certeza, quando passamos dois valores diferentes, a saber, 1 e 2 para o script, a saída é verdadeira: esses números são desiguais.

Teste Condicional Bash: elif

Quando você começa a desenvolver instruções mais complexas e profundamente aninhadas no Bash, logo descobrirá que há um caso em que está se ramificando cada vez mais para o código aninhado, e o código começa a parecer mais complexo por causa das várias camadas de profundidade. Freqüentemente, embora não sempre, pode-se usar uma instrução elif em tais casos. Por exemplo:

 #! / bin / bash if ["$" -lt 2]; então echo "menos que 2" else if ["$" -lt 4]; então echo "menos que 4" else if ["$" -lt 6]; em seguida, echo "menos que 6" fi fi fi if ["$" -lt 2]; então echo "menos que 2" elif ["$" -lt 4]; então echo "menos que 4" elif ["$" -lt 6]; em seguida, echo "menos de 6" fi 

Tendo definido este script como test3. sh, nós o tornamos executável e o executamos.

Os dois blocos de código fazem exatamente o mesmo: eles verificam se o valor passado como a primeira opção para o script (1, 3 e 5 respectivamente) é menor que (-lt) os valores 2, 4 e 6 em sequência. Vemos que os dois blocos funcionam exatamente da mesma forma.

No entanto, o segundo bloco de código, que emprega o uso de instruções elif (que também podem ser lidas como instruções else if) em vez de blocos de instruções condicionais else.. if. O segundo bloco de código não é apenas mais curto, mas também mais limpo, mais claro e mais fácil de ver. Observe que você também pode combinar instruções else e elif em combinação, de uma forma aninhada etc.

Conclusão

Escrever código Bash é, foi e provavelmente por um bom tempo será um exercício agradável para muitos. A criação de declarações condicionais bem elaboradas é uma parte integrante e comum disso. Neste breve tutorial, vimos as instruções if, then, else, elif e fi. Usando as várias instruções condicionais, você poderá criar um código ótimo e limpo. Aproveite!

Nenhum comentário