Aula 7.19 - Como funciona fluxo condicionais no terminal Linux.
Este artigo faz parte do projeto #LTCode
A shell usa as mesmas construções para controle de fluxo que linguagens de programação de alto nível. Exemplo de uso de if else:
O que o comando if faz é avaliar o comando especificado verificando seu status de saída. No exemplo da foto acima foi executado em linha de comando, portanto você pode usar o comando !-2 quando quiser repetir o penúltimo comando. Altere o valor de 2 para repetir comandos mais antigos.
Todo comando retorna para a shell um valor (de 0 a 255) indicando sucesso (0) ou falha em sua execução (diferente de 0). Existem dois comandos internos da shell extremamente simples que apenas terminam com status 0 ou 1.
O comando true sempre executa com sucesso retornando 0 e o comando false sempre executa sem sucesso retornando 1.
O comando mais frequentemente usado com comandos condicionais é o test, pois faz uma variedade de verificações/comparações. Como ilustra a imagem acima o comando possui duas formas equivalentes test ou [ ]. A expressão é avaliada em verdadeiro ou falso, retornando 0 quando a expressão é verdadeira e 1 quando é falsa.
O comando test é capaz de avaliar expressões com arquivos, strings e inteiros. Abaixo está listado as expressões que você pode utilizar entre [ ] para serem avaliadas:
Expressões com arquivos:
- file1 -ef file2
- file1 -nt file2
- file1 -ot file2
- -b file
- -c file
- -d file
- -e file
- -f file
- -g file
- -G file
- -k file
- -L file
- -O file
- -p file
- -r file
- -s file
- -S file
- -t fd
- -u file
- -w file
- -x file
Expressões com strings:
- string
- -n string
- -z string
- string1 = string2
- string1 == string2
- string1 != string2
- string1 > string2
- string1 < string2
- integer1 -eq integer2
- integer1 -ne integer2
- integer1 -le integer2
- integer1 -lt integer2
- integer1 -ge integer2
- integer1 -gt integer2
Versões recentes do bash adicionam um comando composto que age como um aprimoramento do comando test.
O comando [[ ]] é muito similar ao comando test (suporta todas as suas expressões), mas adiciona uma nova comparação de strings.
- string1 =~regex
retorna verdadeiro se string1 casa com a expressão regular estendida regex.
Outra funcionalidade do comando [[ ]] é que o operador == suporta o casamento de padrões da mesma forma que expansão de arquivos.
O bash também proporciona o comando composto (( )) que é útil para realizar operações inteiras, suporta o conjunto completo para avaliações aritméticas. Esse comando é útil para fazer testes verdade aritméticas, resultando em verdadeiro se a avaliação aritmética for não-zero.
Também é possível combinar expressões para criar avaliações mais complexas usando operadores lógicos. Existem três operadores lógicos (AND, OR e NOT) para os comandos test, [[ ]] e (( )). Cada um têm sintaxe diferenciada:
Operação: AND
test e [ ]: -a
[[]] e (()): &&
Operação: OR
test e [ ]: -o
[[]] e (()): ||
Operação: NOT
test e [ ]: -a
[[]] e (()): &&
Para negar uma combinação de expressões, deve-se usar parênteses envolvendo as expressões.
Bash provê dois operadores que podem realizar desvios.
comando1 && comando2
&& (AND): o comando2 só é executado se o comando1 executar com sucesso (status de saída igual a zero).
comando1 || comando2
|| (OR): o comando2 só é executado se o comando1 executar sem sucesso (status de saída diferente de zero).
Próxima aula, clique aqui.
COMENTÁRIOS