Android

Declaração Bash if..else

if Statement Shell Scripting Tutorial for Beginners-37

if Statement Shell Scripting Tutorial for Beginners-37

Índice:

Anonim

A tomada de decisão é um dos conceitos mais fundamentais da programação de computadores. Como em qualquer outra linguagem de programação, as instruções if , if..else , if..elif..else e aninhadas if no Bash podem ser usadas para executar código com base em uma determinada condição.

Neste tutorial, mostraremos os princípios básicos das instruções if do Bash e mostraremos como usá-los em seus scripts de shell.

Declaração if

Bash if condicionais podem ter formas diferentes. A instrução if mais básica tem o seguinte formato:

if TEST-COMMAND then STATEMENTS fi

A instrução if começa com a palavra-chave if seguida pela expressão condicional e pela palavra then chave then . A declaração termina com a palavra fi chave fi .

Se o TEST-COMMAND avaliado como True , os STATEMENTS serão executados. Se TEST-COMMAND retornar False , nada acontecerá, as STATEMENTS serão ignoradas.

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

Vejamos o exemplo de script a seguir que verifica se um determinado número é maior que 10.

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

Salve o código em um arquivo e execute-o na linha de comando:

bash test.sh

O script solicitará que você digite um número. Se, por exemplo, você digitar 15, o comando test será avaliado como true porque 15 é maior que 10 e o comando echo dentro da cláusula then será executado.

The variable is greater than 10.

Instrução if..else

A if..else Bash if..else assume o seguinte formato:

if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi

Se o TEST-COMMAND avaliado como True , os STATEMENTS1 serão executados. Caso contrário, se TEST-COMMAND retornar False , os STATEMENTS2 serão executados. Você pode ter apenas else uma cláusula na declaração.

Vamos adicionar uma cláusula else ao script de exemplo anterior:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." else echo "The variable is equal or less than 10." fi

Instrução if..elif..else

A instrução Bash if..elif..else assume o seguinte formato:

if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi

Se o TEST-COMMAND1 avaliado como True , os STATEMENTS1 serão executados. Se o TEST-COMMAND2 avaliado como True , os STATEMENTS2 serão executados. Se nenhum dos comandos de teste for avaliado como True , o STATEMENTS2 será executado.

Você pode ter uma ou mais cláusulas elif na instrução. A cláusula else é opcional.

As condições são avaliadas sequencialmente. Quando uma condição retorna True as condições restantes não são executadas e o controle do programa se move para o final das instruções if .

Vamos adicionar uma cláusula elif ao script anterior:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." elif] then echo "The variable is equal to 10." else echo "The variable is less than 10." fi

Instruções aninhadas if

O Bash permite aninhar instruções if dentro de instruções if . Você pode colocar várias instruções if dentro de outra instrução if .

O script a seguir solicitará a inserção de três números e imprimirá o maior número entre os três números.

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] then if] then echo "$VAR1 is the largest number." else echo "$VAR3 is the largest number." fi else if] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi fi

Aqui está como a saída será:

Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number. Em vez de usar instruções if aninhadas, geralmente é mais eficiente usar a instrução case.

Condições Múltiplas

Os operadores lógicos OR e AND permitem que você use várias condições nas instruções if .

Aqui está outra versão do script para imprimir o maior número entre os três números. Nesta versão, em vez das instruções if aninhadas, usaremos o operador AND lógico ( && ).

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] &&] then echo "$VAR1 is the largest number." elif] &&] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi

Operadores de teste

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

test EXPRESSION]

Para negar a expressão de teste, use o operador lógico NOT ( ! ). Ao comparar seqüências de caracteres, sempre use aspas simples ou duplas para evitar problemas de divisão ou globos de palavras.

Abaixo estão alguns dos operadores mais usados:

  • -n VAR - Verdadeiro se o comprimento de VAR for maior que zero. -z VAR - Verdadeiro se o VAR estiver vazio. STRING1 = STRING2 - Verdadeiro [STRING1 e STRING2 são iguais. STRING1 != STRING2 - STRING1 e STRING2 verdadeiros não são iguais. INTEGER1 -eq INTEGER2 - True INTEGER1 e INTEGER2 são iguais. INTEGER1 -gt INTEGER2 - True INTEGER1 é maior que INTEGER2. INTEGER1 -lt INTEGER2 - True INTEGER1 é menor que INTEGER2. INTEGER1 -ge INTEGER2 - True INTEGER1 é igual ou superior a INTEGER2. INTEGER1 -le INTEGER2 - True INTEGER1 é igual ou menor que INTEGER2. -h FILE - Verdadeiro se o arquivo existir e for um link simbólico. -r FILE - True se o ARQUIVO existe e é legível. -w FILE - Verdadeiro se o arquivo existir e for gravável. -x FILE - True se o arquivo existe e é executável. -d FILE - Verdadeiro se o arquivo existir e for um diretório. -e FILE - Verdadeiro se o arquivo existir e for um arquivo, independentemente do tipo (nó, diretório, soquete etc.). -f FILE - Verdadeiro se o arquivo existir e for um arquivo regular (não um diretório ou dispositivo).

Conclusão

As instruções if , if..else e if..elif..else permitem controlar o fluxo da execução do script Bash, avaliando determinadas condições.

terminal bash