if Statement Shell Scripting Tutorial for Beginners-37
Índice:
- Declaração
if - Instrução
if..else - Instrução
if..elif..else - Instruções aninhadas
if - Condições Múltiplas
- Operadores de teste
- Conclusão
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:
-
-nVAR- Verdadeiro se o comprimento de VAR for maior que zero.-zVAR- 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.-hFILE- Verdadeiro se o arquivo existir e for um link simbólico.-rFILE- True se o ARQUIVO existe e é legível.-wFILE- Verdadeiro se o arquivo existir e for gravável.-xFILE- True se o arquivo existe e é executável.-dFILE- Verdadeiro se o arquivo existir e for um diretório.-eFILE- Verdadeiro se o arquivo existir e for um arquivo, independentemente do tipo (nó, diretório, soquete etc.).-fFILE- 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.
Custos do projeto SAP citados na declaração de falência da joalheria
Uma rede de joalheria do Colorado culpou parcialmente um projeto problemático da SAP por seu arquivamento de concordata. Uma rede de joias de varejo do Colorado que entrou com pedido de concordata na segunda-feira atribuiu em parte sua mudança ao excesso de custos em uma implementação do SAP, de acordo com um processo judicial. A Shane Co. assinou um contrato com a SAP em 2005 altamente sofisticado "ponto de venda" e sistema de gerenciamento de inventário "a um custo original projetado de US $ 8
A tecnologia da Gomez funcionará em conjunto com o portfólio de ferramentas da Compuware para gerenciar o desempenho de aplicativos locais, fornecendo cobertura "do data center ao cliente", disseram as empresas em um comunicado. declaração
(Mais a seguir.)
Declaração de caso Bash
As declarações de maiúsculas e minúsculas são geralmente usadas para simplificar condicionais complexas quando você tem várias opções diferentes. Usar a instrução case em vez de aninhadas se as instruções ajudarão a tornar seus scripts bash mais legíveis e fáceis de manter.







