Testes condicionais em bash: E se, então, outro, elif

Conteúdo

Bash Shell

Programar em bash pode ser divertido às vezes. Saiba como separar seus ifs de seus else-ifs ou elif, como são chamados em bash, também pode ser divertido. Descubra como acertar as condicionais do bash.

Condicionais de bash: E se, então, outro, elif

Tão bom quanto todas as linguagens de codificação, existem condicionais – declarações condicionais que tornam possível testar uma série de situações. Na maioria das linguagens de programação, um basico if A declaração permitiria testar o estado ou valor de uma determinada variável de programação. Como um exemplo, você pode testar se uma variável está vazia ou não.

Para mais informações sobre variáveis ​​bash, Você pode querer verificar nossas funções pós-Bash e variáveis ​​locais.

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

Ao mesmo tempo, pode-se especificar declarações condicionais complexas, e até mesmo subcamadas dentro do if etc. declaração condicional adequada. Isso torna o Bash muito adequado para manipulação / manipulação de big data, análise de texto e muitas outras tarefas semelhantes a DevOps.

Esta postagem se concentrará principalmente em obter as condicionais corretas, usando if...then, else, e elif afirmações. Uma postagem futura discutirá condições de teste mais complexas, usando subcamadas dentro de declarações condicionais, etc.

Teste condicional Bash: e … então … ser

Escrever uma declaraçã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:

E se [ "1" == "1" ]; então eco 'true'; ser

Exemplo simples de if em bash

O resultado é certo, O que 1 fósforos 1. Observe que a maneira de testar a igualdade entre os itens é usar == e não =. Este é o caso em muitas línguas e, frequentemente, é feito para evitar ou claramente separar da "atribuição" (Em outras palavras, determinar uma variável em um determinado valor).

Observe também que encerramos cada condicional if declaração com uma rescisão fi (a parte de trás de e) demonstração. isso nos permite especificar várias linhas depois de então. then cláusula antes de terminar o seção posterior.

Teste condicional Bash: outro E variáveis

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

Definir test.sh Como segue:

#!/bin/bash

VAR1=1
VAR2=1

if [ "${VAR1}" == "${VAR2}" ]; then 
  echo 'true'
else 
  echo 'false'
fi

Subseqüentemente, fazemos este pequeno script executável pela emissão chmod +x test.sh que define a bandeira executável para o test.sh texto.

Exemplo de se no script usando variáveis e uma cláusula outra

Dentro do script que estabelecemos VAR1 e VAR2 ao valor de 1. A seguir, emitimos uma declaração se que compara as duas variáveis, e nós ecoamos true se a comparação for válida, e false se a comparação falhou. O resultado é correto true Produção.

Teste condicional Bash: e Aninhamento avançado e verificação

Podemos expandir o último exemplo um pouco mais e verificar a desigualdade usando != ao invés de ==, adicionar laços aninhados e usar algumas verificações variáveis avançadas bash nativo ao mesmo tempo.

Definir test2.sh Como segue:

#!/bin/bash

VAR1="${1}"
VAR2="${2}"

E se [ ! -Com "${VAR1}" -uma ! -Com "${VAR2}" ]; then
  if [ "${VAR1}" != "${VAR2}" ]; then 
    echo 'true'
  else 
    echo 'false'
  fi
else
  echo "Afirmar: Ou VAR1 (valor: '${VAR1}'), ou VAR2 (valor: '${VAR2}'), ou ambos, estão vazios!"
ser

Neste roteiro, nós substituímos nossos valores codificados de 1 para ambos VAR1 e VAR2 com duas variáveis especiais ou seja, ${1} e ${2}, que representam a primeira e segunda opção / parâmetro, passou da linha de comando para o script. Nós fazemos nosso script executável novamente e executá-lo com várias combinações de alternativas incorretas.

Uma desigualdade mais complexa se a afirmação que também testa variáveis de script

a -z o código significa verifique se um parâmetro está vazio ou não. Nós negamos o resultado (Em outras palavras, sim se transforma em não e ele não se transforma em sim, ou melhor / Melhor, verdadeiro se torna falso e falso se torna verdadeiro) através do uso de um ponto de exclamação (!) em frente -z Verifica. Mais tarde, também usamos um E cláusula (Em outras palavras, ambos os lados do E cláusula tem que ser provada verdadeira).

Em outras palavras, a maneira como você pode ler o if [ ! -z "${VAR1}" -a ! -z "${VAR2}" ]; a linha na linguagem natural é VAR1 e VAR2 não devem estar vazios. Podemos ver que nossas variáveis ​​estão sendo verificadas corretamente por esta declaração condicional, já que toda vez que tentamos passar apenas uma variável, ou duas variáveis ​​onde uma está vazia, o programa salta para o else cláusula informando sobre o uso incorreto de nossa opção de script.

Em conclusão, dentro do primeiro if afirmação condicional, nós temos uma escola (jargão da informática: aninhado) sentença condicional. Esta declaração verifica nossa desigualdade usando não é igual (!=). efetivamente, quando passamos dois valores diferentes, a saber 1 e 2 para o script, o resultado é verdadeiro: esses números são desiguais.

Teste condicional Bash: elif

Quando você começa a desenvolver declarações mais complexas e profundamente aninhadas em Bash, você logo descobrirá que há um caso em que você está se ramificando cada vez mais fundo no código aninhado., e o código começa a parecer mais complexo devido às múltiplas camadas de profundidade. Frequentemente, mesmo quando nem sempre, você pode usar um elif declaração em tais casos. Como um exemplo:

#!/bin/bash

if [ "${1}" -lt 2 ]; then
  echo "menos do que 2"
else
  if [ "${1}" -lt 4 ]; then
    echo "menos do que 4"
  else
    if [ "${1}" -lt 6 ]; then
      echo "menos do que 6"
    fi
  fi
fi

if [ "${1}" -lt 2 ]; then
  echo "menos do que 2"
elif [ "${1}" -lt 4 ]; then
  echo "menos do que 4"
elif [ "${1}" -lt 6 ]; then
  echo "menos do que 6"
ser

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

Exemplo de declaração condicional Elif com duas implementações diferentes

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

Apesar disto, o segundo bloco de código, que emprega o uso de elif afirmações (que também pode ser lido como mas afirmações) ao invés de mais … e blocos de declaração condicional. O segundo bloco de código não é apenas mais curto, também é mais limpo, mais claro e mais agradável aos olhos. Observe que você também pode combinar else e elif declarações em combinação, caminho aninhado, etc.

conclusão

Escrever código bash é, foi e provavelmente será por algum tempo um exercício agradável para muitos. A criação de declarações condicionais bem elaboradas é parte integrante e comum disso.. Neste breve tutorial, nós analisamos if, then, else, elif e fi afirmações. Usando as várias declarações condicionais, você será capaz de criar um código excelente e limpo. Desfrutar!

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.