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,if
if..else
if..elif..else
e aninhadosif
instruçõ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 if
declaraçã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.
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 deVAR
for maior que zero. -
-z
VAR
Verdadeiro se oVAR
está vazio. -
STRING1 = STRING2
Verdadeiro seSTRING1
eSTRING2
são iguais. -
STRING1 != STRING2
– True ifSTRING1
andSTRING2
não são iguais., -
INTEGER1 -eq INTEGER2
– True ifINTEGER1
andINTEGER2
are equal. -
INTEGER1 -gt INTEGER2
– True ifINTEGER1
is greater thanINTEGER2
. -
INTEGER1 -lt INTEGER2
– True ifINTEGER1
is less thanINTEGER2
. -
INTEGER1 -ge INTEGER2
– True ifINTEGER1
is equal or greater than INTEGER2. -
INTEGER1 -le INTEGER2
– True ifINTEGER1
is equal or less thanINTEGER2
., -
-h
FILE
– True if theFILE
exists and is a symbolic link. -
-r
FILE
– True if theFILE
exists and is readable. -
-w
FILE
– True if theFILE
exists and is writable. -
-x
FILE
– True if theFILE
exists and is executable., -
-d
FILE
Verdadeiro se oFILE
existe e é um diretório. -
-e
FILE
– True if theFILE
existe e é um ficheiro, independentemente do tipo (nó, directório, tomada, etc.). -
-f
FILE
– True if theFILE
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.