.
-----------------------
Linux - Aprenda a usar if, then, else e fi
-----------------------
No GNU/Linux "instruções condicionais" são instruções utilizadas para a "execução condicional" de comandos.
GNU/Linux - Instruções condicionais: Instruções usadas em shell script para executar uma serie de comandos com base em uma condição.
ENTÃO:
Se acontece ISTO uma série de comandos é executada. Se não acontece ISTO, uma OUTRA série de comandos é executada.
Caso aconteça ISTO uma série de comandos é executada. Caso não aconteça ISTO, outra série de comandos é executada.
-----------------------
No shell script para fazer "ISTO", usa-se:
1) if
2) case
-----------------------
Primeira sintaxe - if:
-----------------------
if #começa com "if" mais um "comando-condição" e se for verdadeiro...
then #Então
comando1 #Execute este comando ou esta lista de comandos.
comando2
comando3
fi #Fecha a instrução condicional usando o if ao contrário
-----------------------
Segunda sintaxe - if:
if #Se isto for verdadeiro
then # Então
comando1 #Verdadeiro este comando é executado
else # Se não...
comando2 #Este outro comando é executado
fi #Fecha a instrução condicional o if ao contrário
-----------------------
Terceira sintaxe - if:
-----------------------
Exemplo1:
-----------------------
if #Se isto for verdadeiro
then # Então
comando1 #Execute este comando ou lista de comandos
elif #elif = else if, se não, se acontecer isto...
then #Então
comando2 #Execute este outro comando
else #Se não for verdadeiro...
comando3 #Execute então este outro comando
fi
-----------------------
Exemplo2:
-----------------------
A terceira sintaxe é ou já foi usada dentro dos scripts de inicialização do GNU/Linux. A forma comum acho que é (era):
-----------------------
if [ condição ];
then
comando-instrução1;
comando-instrução2;
comando-instrução3;
...
elif [ condição ];
comando-instrução4;
comando-instrução5;
comando-instrução6;
...
else
comando-instrução7;
comando-instrução8;
comando-instrução9;
...
fi.
-----------------------
Exemplo3:
-----------------------
if [ condição ];
then
comando-instrução1
elif [ condição ];
then
comando-instrução1
else
comando-instrução2
fi
-----------------------
OBS:
O if do shell script tem um comando e verifica se o comando foi executado com sucesso ele cai como verdadeiro tendo código de retorno zero. Se for falso (maior que zero), cai no else ou sai do if.
-----------------------
Tem um comando que faz uma condição. O comando test. O comando test é usado para criar uma condição. A sintaxe é:
test
-----------------------
O comando test tem várias expressões. As mais usadas são do um ao 6.
-----------------------
-eq (equal), -ne (not equal), -gt (greater than), -ge (greater equal), -lt (lower than), -le (lower equal)
-----------------------
1) -eq - é igual a - if [ "$a" -eq "$b" ]
2) -ne - é diferente - if [ "$a" -ne "$b" ]
3) -gt - é maior que - if [ "$a" -gt "$b" ]
4) -ge - é maior ou igual que - if [ "$a" -ge "$b" ]
5) -lt - é menos que - if [ "$a" -lt "$b" ]
6) -le - é menos que ou igual que - if [ "$a" -le "$b" ]
7) = "$b"))
-----------------------
Strings podem ser comparadas:
1) = (Uma string igual a outra)
2) != (Uma string diferente da outra)
3) -n (String não nula)
4) -Z (String nula)
-----------------------
Arquivos podem ser testados:
1) -f (É um arquivo)
2) -d (É um diretório/pasta)
3) -r (Tem permissão de leitura)
4) -W (Tem permissão de escrita)
5) -X (Tem permissão de execução)
6) -S (Possui tamanho maior que zero)
-----------------------
EXEMPLOS:
-----------------------
test 25 -gt 50
(25 é maior que 50? Não. O código de saída será 1.)
test "$VALOR1" -eq 15
(O valor da variável VALOR1 é igual a 12? Se for o exit code será zero.)
test -f /tmp/testes
(O arquivo tmp/testes existe? Se existir o exit code será zero. Se não existir será 1)
test "$VALOR1" = "$VALOR2"
(A corda da variável VALOR1 é igual a string da variável VALOR2?)
-----------------------
OBS-IMPORTANTE:
EM VEZ DE ESCREVER A PALAVRA TEST USA-SE COLCHETES COM ESPAÇO
-----------------------
EXEMPLOS:
-----------------------
[ 25 -gt 50 ]
(25 é maior que 50? Não. O código de saída será 1.)
[ "$VALOR1" -eq 15 ]
(O valor da variável VALOR1 é igual a 12? Se for o exit code será zero.)
[ -f /tmp/testes ]
(O arquivo tmp/testes existe? Se existir o exit code será zero. Se não existir será 1)
[ "$VALOR1" = "$VALOR2" ]
(A corda da variável VALOR1 é igual a string da variável VALOR2?)
-----------------------
A FORMA MAIS USADA É COM COLCHETES E ESPAÇO.
-----------------------
OUTRO EXEMPLO:
-----------------------
VALOR1=15
if [ ! "$$VALOR1" -gt 12 ]
# (Negação "!" inverte não entra no fluxo)
# (É dado como falso não entra em lugar nenhum.)
then
echo sucesso
fi
-----------------------
MAIS UM EXEMPLO:
-----------------------
VALOR1=15
if [ "$VALOR1" -gt 12 -a "VALOR1" -lt 20 ]
#AND (-a) se tudo separado pelo -a for verdade terá sucesso se não for não entra em lugar nenhum.
then
echo sucesso
fi
-----------------------
EXEMPLO OR:
-----------------------
VALOR1=15
if [ "$VALOR1" -gt 12 -o "VALOR1" -lt 20 ]
#OR (-o) se pelo menos uma situação for verdade terá sucesso. Se as duas forem falsas, não entra em lugar nenhum.
then
echo sucesso
fi
-----------------------
O -a TEM PREFERÊNCIA SOBRE O -o
-----------------------
Linux - aprendendo a usar o comando test:
-----------------------
Comando de retorno usando test (zero "0" é verdadeiro, um "1" é falso)
-----------------------
Abro o terminal pelo menu do sistema e executo:
-----------------------
1)
test 10 -gt 5 (é maior que)
echo $?
[ 10 -gt 5 ]
echo $?
2)
test 15 -eq 12 (é igual a)
echo $?
[ 15 -eq 12 ]
echo $?
3)
test 8 -ne 12 (é diferente)
echo $?
[ 8 -ne 12 ]
echo $?
4)
test 25 -ge 15 (é maior ou igual que)
echo $?
[ 25 -ge 15 ]
echo $?
5)
test 35 -lt 25 (é menos que)
echo $?
[ 35 -lt 25 ]
echo $?
6)
test 8 -le 10 (é menos que ou igual que)
echo $?
[ 8 -le 10 ]
echo $?
7)
VALOR1=101
8)
test $VALOR1 -eq 101
echo $?
[ $VALOR1 -eq 101 ]
echo $?
9)
test $VALOR1 -gt 90
echo $?
[ $VALOR1 -gt 90 ]
echo $?
10)
test $VALOR1 -ne 15
echo $?
[ $VALOR1 -ne 15 ]
echo $?
-----------------------
Executo:
mkdir -vp PastaIF/SubIF
cd PastaIF/SubIF
touch IfExemp.sh
chmod +x IfExemp.sh
ls -li
pwd
vi IfExemp.sh
(Aperto Esc, digito i, copio e colo o texto abaixo no vi com o mouse.)
#!/bin/bash
if grep "$1" /etc/passwd > /dev/null
# uso o parâmetro cifrão 1
then
echo "Este user existe"
else
echo "Este user não existe"
fi
# Fim do script
----------------------
Aperto Esc, digito Shift ZZ
----------------------
Executo:
whoami
./IfExemp.sh meu-usuário-whoami
./IfExemp.sh Jocam
./IfExemp.sh AnaCa
./IfExemp.sh
----------------------
OUTRO EXEMPLO CRIANDO UMA VARIÁVEL:
----------------------
#!/bin/bash
# Declarando variável: USUWARRIO
USUWARRIO=$(grep "$1" /etc/passwd) #OBS: uso o parâmetro cifrão 1
#OBS: test -n é para ver se uma varivel não é nula
if test -n "$USUWARRIO" #OBS: Colocar a variável entre aspa
then #OBS: se a variável não for nula cai no them
echo "Este user existe"
else
echo "Este user não existe"
fi
# Fim do script
----------------------
POSSO USAR O TEST SINTAXE COLCHETES:
----------------------
#!/bin/bash
# Declarando variável: USUWARRIO
USUWARRIO=$(grep "$1" /etc/passwd)
#OBS-1: uso o parâmetro cifrão 1 entre aspas
#OBS-2: [ -n "$USUWARRIO" ] é para ver se a varivel não é nula
#OBS-3: Colocar a variável entre aspa
#OBS-4: se a variável não for nula cai no then
if [ -n "$USUWARRIO" ]
then
echo "Este user existe"
else
echo "Este user não existe"
fi
# Fim do script
----------------------
PARA EXECUTAR O SCRIPT:
----------------------
touch 2IfExemp.sh
chmod +x 2IfExemp.sh
vi 2IfExemp.sh
(Aperto Esc, digito i, copio e colo o texto no vi com o mouse.)
----------------------
Aperto Esc, Seguro a tecla Shift, digito: ZZ
----------------------
Executo:
ls -lit
pwd
whoami
----------------------
Executo:
./2IfExemp.sh meu-usuário-whoami
./2IfExemp.sh JeCam
./2IfExemp.sh UneCo
./2IfExemp.sh root
----------------------
MAIS OUTRO EXEMPLO:
----------------------
#!/bin/bash
# Declarando variável: USUWARRIO
USUWARRIO=$(grep "$1" /etc/passwd)
#OBS-1: uso o parâmetro cifrão 1 entre aspas
#OBS-2: [ -n "$USUWARRIO" ] é para ver se a varivel não é nula
#OBS-3: Colocar a variável entre aspa
#OBS-4: se a variável não for nula cai no then
if [ -n "$USUWARRIO" ]
then
echo "Este user existe"
if [ "$USUWARRIO" = root ]
then
echo ok
fi
else
echo "Este user não existe"
fi
# Fim do script
----------------------
CONTINUANDO COM EXEMPLOS:
----------------------
#!/bin/bash
# Declarando variável: USUWARRIO
USUWARRIO=$(grep "$1" /etc/passwd)
#OBS-1: uso o parâmetro cifrão 1 entre aspas
#OBS-2: test -n é para ver se uma varivel não é nula
#OBS-3: Colocar a variável entre aspa
#OBS-4: se a variável não for nula cai no then
#OBS-5: "if test $# -gt 0" - O cifrão mais cerquilha testa se foi inserido algum parâmetro. Se o parâmetro for maior que zero prossegue.
if test $# -gt 0
then
echo 'Foi inserido um valor maior que zero. Prosseguindo...'
else
echo 'Informe um nome como parâmetro.' ; exit
fi
if [ -n "$USUWARRIO" ]
then
echo "Este user existe"
else
echo "Este user não existe"
fi
# Fim do script
----------------------
PARA EXECUTAR O SCRIPT:
----------------------
touch 3IfExemp.sh
chmod +x 3IfExemp.sh
vi 3IfExemp.sh
(Aperto Esc, digito i, copio e colo o texto no vi com o mouse.)
----------------------
Aperto Esc, Seguro a tecla Shift, digito: ZZ
----------------------
Executo:
ls -lit
pwd
whoami
----------------------
Executo:
----------------------
1) ./3IfExemp.sh
2) ./3IfExemp.sh meu-usuário-whoami
3) ./3IfExemp.sh JeCam
4) ./3IfExemp.sh UneCo
5) ./3IfExemp.sh root
----------------------
UM EXEMPLO PARECIDO, USANDO TEST COLCHETES:
----------------------
#!/bin/bash
# Declarando variável: USUWARRIO
USUWARRIO=$(grep "$1" /etc/passwd)
#OBS-1: uso o parâmetro cifrão 1 entre aspas
#OBS-2: [ -n "$USUWARRIO" ] é para ver se a varivel não é nula
#OBS-3: Colocar a variável entre aspa
#OBS-4: se a variável não for nula cai no then
#OBS-5: "if test $# -gt 0" - O cifrão mais cerquilha testa se foi inserido algum parâmetro. Se o parâmetro for maior que zero prossegue.
if [ $# -gt 0 ]
then
echo 'Foi inserido um valor maior que zero. Prosseguindo...'
else
echo 'Informe um nome como parâmetro e execute novamente o script.'
echo
sleep 2
echo 'Para obter o nome do usuário digite: whoami antes de executar o script.'
sleep 2
echo
exit
fi
if [ -n "$USUWARRIO" ]
then
echo "Este user existe"
else
echo "Este user não existe"
fi
----------------------
OBS:
Ei fera em shell script, é bom ler o texto abaixo...
1)echo - Imprime texto na tela
2)read - Captura dados do usuário e coloca numa variável
3)exit - Finaliza o script
4)sleep - Dá uma pausa em segundos no script
5)clear - Limpa a tela
6)if - Controle de fluxo que testa uma ou mais expressões
7)case - Controle de fluxo que testa várias expressões ao mesmo tempo
8)for - Controle de fluxo que testa uma ou mais expressões
9)while - Controle de fluxo que testa uma ou mais expressões
10)until - Tem as mesmas características do while, a única diferença é que ele faz o contrário.
----------------------
Pronto! Nós sabemos usar if, then, else, fi e muito mais!
.
Até Breve!
🙂
.