Aula 7.19: Estruturas de fluxo condicionais Linux shell

COMPARTILHAR:

Whatsapp Telegram Twitter Facebook Reddit

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
Se true file1 e file2 possuem mesmo número de inode (hardlink).
  • file1 -nt file2
Se true file1 é mais novo que file2.
  • file1 -ot file2
Se true file1 é mais velho que file2.
  • -b file
Se true arquivo existe e é um arquivo/dispositivo de bloco-especial.
  • -c file
Se true arquivo existe e é um arquivo/dispositivo de caractere-especial.
  • -d file
Se true arquivo existe e é um diretório.
  • -e file
Se true arquivo existe arquivo existe.
  • -f file
Se true arquivo existe e é um arquivo regular.
  • -g file
Se true arquivo existe e é setgid.
  • -G file
Se true arquivo existe e pertence ao ID do grupo efetivo.
  • -k file
Se true arquivo existe e tem o stick bit definido.
  • -L file
Se true arquivo existe e é um link simbólico.
  • -O file
Se true arquivo existe e pertence ao ID do usuário efetivo.
  • -p file
Se true arquivo existe e é um pipe nomeado.
  • -r file
Se true arquivo existe e é legível pelo usuário efetivo.
  • -s file
Se true arquivo existe e tem tamanho maior que zero.
  • -S file
Se true arquivo existe e é socket de rede.
  • -t fd
É um descritor de arquivos redirecionado de/para o terminal.
  • -u file
Se true arquivo existe é setuid.
  • -w file
Se true arquivo existe e é gravável pelo usuário efetivo.
  • -x file
Se true arquivo existe e é executável pelo usuário efetivo.

Expressões com strings:

  • string
Se true a string está definida, não é null.
  • -n string
Se true o tamanho da string é maior que zero.
  • -z string
Se true o tamanho da string é zero.
  • string1 = string2
Se true string1 e string2 são iguais.
  • string1 == string2
Se true string1 e string2 são iguais.
  • string1 != string2
Se true string1 e string2 não são iguais.
  • string1 > string2
Se true string1 vem depois de string2 se ordenadas.
  • string1 < string2
Se true string1 vem antes de string2 se ordenadas.

Expressões com inteiros:
  • integer1 -eq integer2
Se true integer1 é igual a integer2.
  • integer1 -ne integer2
Se true integer1 é diferente de integer2.
  • integer1 -le integer2
Se true integer1 é menor ou igual a integer2.
  • integer1 -lt integer2
Se true integer1 é menor que integer2.
  • integer1 -ge integer2
Se true integer1 é maior ou igual a integer2.
  • integer1 -gt integer2
Se true integer1 é maior que 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

Nome

#ann,25,#HK,30,#LTCode,130,Artigo - Diversos,156,Artigo - Games,201,Artigo - Tecnologia,615,autor-thomaz,7,Coluna - Alternative World,24,Coluna - Fail,12,Coluna - Tec Line,14,Criptomoeda,72,Curiosidades - Diversos,49,Curiosidades - Tecnologia,50,en,2,estudo,8,HN,12,logica,14,Pentest,23,Programar C,29,Programar POO,6,Programar Python,6,Programar Shell,25,Programar verilog,12,qradar,4,Raspberry Pi,15,Redes,3,root,117,Shorty Awards,1,Smartphones - Reviews,33,Teoria,10,Top Nostalgia,2,VPN,19,WhatsApp,46,
ltr
item
Limon Tec: Aula 7.19: Estruturas de fluxo condicionais Linux shell
Aula 7.19: Estruturas de fluxo condicionais Linux shell
Aula 7.19 - Como funciona fluxo condicionais no terminal Linux.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmI65og5X32bSLCmBz3uJnZlmDvzOFWZWoZzyvUhh2rtp8Hr_kolKy02pOjxpkThrz8uHaTu3skUdeDJlkFEKkC2a9EabpwPzbwJ-hm-po0QIaNeNvYm5CJw3k4SbN03V-d2h1dxrW2tz4/s640/ltcode.jpg
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmI65og5X32bSLCmBz3uJnZlmDvzOFWZWoZzyvUhh2rtp8Hr_kolKy02pOjxpkThrz8uHaTu3skUdeDJlkFEKkC2a9EabpwPzbwJ-hm-po0QIaNeNvYm5CJw3k4SbN03V-d2h1dxrW2tz4/s72-c/ltcode.jpg
Limon Tec
https://www.limontec.com/2023/03/aula-7-19-shellscript-ltcode.html
https://www.limontec.com/
https://www.limontec.com/
https://www.limontec.com/2023/03/aula-7-19-shellscript-ltcode.html
false
2157924926610706248
UTF-8
Carregar todos posts Não encontramos nenhum post VER TUDO Ler mais Responder Cancelar resposta Deletar Por Home PÁGINAS POSTS Ver tudo RECOMENDADO PARA VOCÊ LABEL ARQUIVO SEARCH TODOS POSTS Não encontramos nenhum post relacionado a sua requisição VOLTAR PÁGINA INICIAL Domingo Segunda Terça Quarta Quinta Sexta Sábado Dom Seg Ter Qua Qui Sex Sab Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro Jan Fev Mar Abr Maio Jun Jul Ago Set Out Nov Dez apenas agora 1 minuto atrás $$1$$ minutes ago 1 hora atrás $$1$$ hours ago Ontem $$1$$ days ago $$1$$ weeks ago mais de 5 semanas atrás Seguidores Seguir ESTE CONTEÚDO ESTÁ BLOQUEADO PASSO 1: Compartilhe com seus amigos PASSO 2: Clique no link compartilhado Copiar Todo Código Selecionar Todo Código Todos códigos foram copiados para seu clipboard Não é possível copiar códigos / textos, por favor aperte [CTRL]+[C] (ou CMD+C no Mac) para copiar Tabela de conteúdo