neste tutorial, iremos guiá-lo através do básico da Declaração Bash

e mostrar-lhe como usá-la nos seus scripts shell.a tomada de decisão é um dos conceitos mais fundamentais da programação informática. Como em qualquer outra linguagem de programação,ifif..elseif..elif..elsee aninhadosifinstruções no Bash pode ser usado para executar código com base em uma determinada condição.,

if Statement #

Bashif conditions can have different forms. O mais básico if instrução assume a seguinte forma:

if TEST-COMMANDthen STATEMENTSfi

if instrução começa com a tag if palavras-chave seguido da expressão condicional e o then palavra-chave. A declaração termina com a palavra-chave

.,

If the TEST-COMMAND evaluates to True, the STATEMENTS gets executed. Se TEST-COMMAND retorna False, nada acontece, o STATEMENTS é ignorado.

em geral, é uma boa prática indentar sempre o seu código e separar blocos de código com linhas em branco. A maioria das pessoas escolhe usar indentação de 4 espaços ou 2 espaços. As marcas e linhas em branco tornam o seu código mais legível e organizado.,

vejamos o seguinte exemplo de script que verifica se um dado número é maior que 10:

#!/bin/bashecho -n "Enter a number: "read VARif ]then echo "The variable is greater than 10."fi

Salve o código em um arquivo e executá-lo a partir da linha de comando:

bash test.sh

O script irá solicitar que você digite um número. Se, por exemplo, introduza 15, test comando irá avaliar a true porque 15 anos é maior do que 10, e o echo comando dentro de then cláusula será executada.

The variable is greater than 10.

if..,Instrução else #

O Bash if..else instrução assume a seguinte forma:

if TEST-COMMANDthen STATEMENTS1else STATEMENTS2fi

Se TEST-COMMAND avalia True STATEMENTS1 será executada. Caso contrário, se TEST-COMMAND retorna False STATEMENTS2 será executada. Você pode ter apenas uma cláusula else na declaração.,

Vamos adicionar um else cláusula anterior exemplo de script:

Se você executar o código e introduza um número, o script irá imprimir uma mensagem diferente, dependendo de se o número é maior ou menor/igual a 10.

if..elif..Instrução else #

O Bash if..elif..else instrução assume a seguinte forma:

if TEST-COMMAND1then STATEMENTS1elif TEST-COMMAND2then STATEMENTS2else STATEMENTS3fi

Se TEST-COMMAND1 avalia True STATEMENTS1 será executada., Se o TEST-COMMAND2 avalia True STATEMENTS2 será executada. Se nenhum dos comandos de teste avaliar para True, o STATEMENTS2 é executado.

pode ter uma ou mais cláusulas elif na declaração. A cláusula else é facultativa.as condições são avaliadas sequencialmente., Uma vez que uma condição retorna True as condições restantes não são realizadas e o controle do programa se move para o final das declarações if.

Vamos adicionar um elif cláusula para o script anterior:

Instruções if Aninhadas #

Bash permite que você ninho if instruções dentro de if instruções. Você pode colocar vários ifdeclaração dentro de outroif declaração.,

o seguinte programa irá pedir-lhe para introduzir três números e irá imprimir o maior número entre os três números.

Aqui está como a saída será semelhante a:

Enter the first number: 4Enter the second number: 7Enter the third number: 27 is the largest number.
em Geral, é mais eficiente usar o case instrução em vez disso, aninhado if instruções.

Várias Condições #

A lógica OR e AND operadores permitem que você use várias condições de if instruções.,

Aqui está outra versão do script para imprimir o maior número entre os três números. Nesta versão, ao invés das declarações aninhadas

, estamos usando o lógicoAND(&&) operador.

Operadores de testes #

No Bash, o test comando assume uma das seguintes formas de sintaxe:

test EXPRESSION]

Para fazer com que o script portátil, preferem utilizar o antigo teste [ comando que está disponível em todos os shells do POSIX., A nova versão atualizada do test comando [[ (parênteses duplos) é suportado na maioria dos sistemas modernos usando Bash, Zsh e Ksh como shell padrão.

para negar a expressão de teste, utilize o operador lógico

(!). Ao comparar strings, use sempre aspas simples ou duplas para evitar divisão de palavras e problemas de globulação.,

Abaixo estão alguns dos mais comumente usados os operadores:

  • -n VAR – Verdadeiro se o comprimento de VAR for maior que zero.
  • -z VAR Verdadeiro se o VAR está vazio.
  • STRING1 = STRING2 Verdadeiro se STRING1 e STRING2 são iguais.
  • STRING1 != STRING2 – True ifSTRING1andSTRING2 não são iguais.,
  • INTEGER1 -eq INTEGER2 – True if INTEGER1 and INTEGER2 are equal.
  • INTEGER1 -gt INTEGER2 – True if INTEGER1 is greater than INTEGER2.
  • INTEGER1 -lt INTEGER2 – True if INTEGER1 is less than INTEGER2.
  • INTEGER1 -ge INTEGER2 – True if INTEGER1 is equal or greater than INTEGER2.
  • INTEGER1 -le INTEGER2 – True if INTEGER1 is equal or less than INTEGER2.,
  • -h FILE – True if the FILE exists and is a symbolic link.
  • -r FILE – True if the FILE exists and is readable.
  • -w FILE – True if the FILE exists and is writable.
  • -x FILE – True if the FILE exists and is executable.,
  • -d FILE Verdadeiro se o FILE existe e é um diretório.
  • -eFILE – True if the FILE existe e é um ficheiro, independentemente do tipo (nó, directório, tomada, etc.).
  • -fFILE – True if the FILE existe e é um ficheiro regular (não uma pasta ou dispositivo).,

Conclusão #

if if..else e if..elif..else declarações permitem que você controle o fluxo de Bash script de execução, através da avaliação de condições.