O Guia do Iniciante ao Shell Script - 4 Condições e Declarações Se-Então
Nós cobrimos o suficiente do básico em nosso guia sobre scripts de shell que você deve se sentir confortável experimentando. Na edição desta semana, vamos abordar algumas das coisas mais divertidas, como condições e declarações "se-então".
Quais são as condições?
Na linguagem cotidiana, dizemos que as condições são requisitos que precisam ser atendidos para que algo ocorra. Para que meu laptop possa se conectar à Internet, há várias condições que devem ser atendidas, como ter um ISP, o modem e / ou roteador ligados, meu laptop ligado, etc. É muito simples e, se houver, desses requisitos não são cumpridos, o resultado - meu laptop se conectando à internet - não acontece.
As condições no campo da computação funcionam de maneira semelhante. Podemos testar se uma string corresponde a outra string, se não corresponde a outra string, ou mesmo se ela existe. Da mesma forma, podemos testar argumentos numéricos para ver se um é maior que, menor que ou igual a outro. Para fazer com que algo aconteça depois que as condições do teste são atendidas, usamos declarações "se-então". Seu formato é bem simples.
se CONDIÇÃO
então
comando1
comando2
…
comando
fi
Se declarações
Vamos executar um script de teste rápido, vamos?
se testar $ 1 -gt $ 2
então
eco “$ 1 é maior que $ 2”
fi
Você notará que somente quando essa condição for verdadeira, o script executará o seguinte comando. Caso contrário, a instrução "if" será encerrada. Se houver algum comando após a instrução “if”, eles serão executados normalmente. Eu adicionei a seguinte linha ao final do nosso script acima para ilustrar isso:
eco “Isto vem depois da declaração if”
Aqui estão alguns outros operadores numéricos que você pode querer experimentar:
- -eq: igual a
- -ne: não é igual a
- -lt: menos do que
- -le: menor ou igual a
- -gt: maior que
- -ge: maior que ou igual a
Cadeias de Teste
Agora, se modificarmos a primeira linha do nosso script para ser isso:
se teste $ 1 = $ 2
então a condição testará se os dois são iguais. Há uma pegadinha aqui !! O uso de um sinal de igual (=) compara duas seqüências de caracteres e não números. Se você deseja comparar números, você precisaria usar o operador "-eq" de forma semelhante ao modo como usamos "-gt" acima.
Agora vamos fazer outra modificação:
se testar $ 1! = $ 2
A inclusão do ponto de exclamação (!) Age como um modificador "não". Ou seja, ele só executa o seguinte comando quando as duas cadeias não correspondem.
Aqui está uma lista de alguns testes baseados em string que você pode usar:
- string: usando apenas um argumento por si só testa se a string não está em branco (nula) ou não está definida de alguma forma
- -n string: isso testará se a string não está em branco e está definida
- -z string: isso testará se a string está em branco e é definida dessa maneira
O que mais sobre se?
Admito que o título da seção foi definitivamente um trocadilho ruim. Ok, sabemos como executar um comando se um teste for verdadeiro, mas e se quisermos executar um comando diferente se for falso? Podemos facilmente juntar os dois, adicionando uma seção às nossas declarações “se-então” - um “else”!
se CONDIÇÃO
então
comando1
comando2
…
comando
outro
comando1
comando2
…
comando
fi
Vamos montar um script simples.
Há tudo com o recuo adequado. Se você olhar de perto, você notará que usamos colchetes ([e]) em vez do comando de teste. Eles são funcionalmente equivalentes para os nossos propósitos, e é muito mais provável que você veja os colchetes por vários motivos, então vamos usá-los a partir de agora.
Veja como será a saída:
É tão fácil!
O que eu faço agora?
Agora que você sabe como usar instruções “if-then-else”, é possível executar scripts que podem executar testes. Por exemplo, você pode executar um script que calcula um hash md5 de um arquivo e compará-lo ao que você baixou em um arquivo para ver se eles correspondem.
Para alguns pontos de bônus, você pode criar um script que tenha um loop “for”, mas usa condições de teste em vez de ler linhas de um arquivo de lista…
Estamos chegando a algumas das partes mais interessantes em nosso Beginner's Guide to Shell Scripting. Se você perdeu as lições anteriores, aqui está uma lista rápida para você conferir:
- Noções básicas de scripts de shell
- Usando For Loops
- Comandos mais básicos
- Quais são as diferenças entre os shells do Linux??
- Como usar expressões regulares básicas
Se você criou ou usou scripts que utilizam condições de teste, instruções if-then-else e loops "for", compartilhe conosco nos comentários!