Se e mais condicionais no script ZSH

Se e mais condicionais no script ZSH
A tomada de decisão, também chamada de condicionais, é um bloco de construção fundamental na programação. Neste tutorial, discutiremos como implementar condicionais em nossos scripts usando o shell ZSH.

É bom observar que, como o ZSH é construído em cima do Bash, a sintaxe e a funcionalidade são semelhantes para scripts construídos para shell Bash ou Zsh.

If Declaração

A maneira mais básica de implementar a lógica condicional em um script de shell é usando uma instrução IF. A sintaxe geral para uma instrução IF em Zsh está abaixo:

#!/usr/bin/zsh
se condição
então
// Run Comandos
fi

Para implementar uma declaração IF, começamos chamando a palavra -chave se. Em seguida, passamos a expressão condicional para avaliar. A expressão condicional deve retornar um valor booleano.

Depois que a expressão condicional chega à palavra -chave e no bloco FI, dentro desses blocos, passamos os comandos para executar se a expressão condicional avaliar para verdadeiro.

Se a expressão condicional passada avaliar para um false booleano, o bloco de comandos dentro do bloco então fi será ignorado e as saídas condicionais.

Embora não seja necessário, é recomendável recuar seus blocos de código para legibilidade e manutenção.

Considere o exemplo se a declaração abaixo:

Toque em condicionais.condicionais sh && vim.sh
#!/usr/bin/zsh
Se [[100 -GT 50]]
então
eco "100 é maior que 50"
fi

Salve o arquivo e feche.

Em seguida, faça o arquivo executável usando o comando chmod como:

CHMOD +X condicionais.sh

Finalmente, execute o script como:

./condicionais.sh

O script será executado no bloco if e verificar se 100 é maior que 50. Se for verdade, ele executará o comando e a saída do eco.

Abaixo está um exemplo de saída:

$ ./condicional.sh
100 é maior que 50

Se ... else declaração

Uma versão mais evoluída da instrução if é a declaração se ... else. Funciona como a instrução if, mas adiciona uma alça se a expressão condicional avaliar para false.

Abaixo está a sintaxe geral para a declaração se… else:

#!/usr/bin/zsh
se condicional
então
// comandos para executar se verdadeiro
outro
// comandos para executar se false
fi

Como visto no exemplo acima, se a expressão condicional é avaliada como verdadeira, o bloco entre então e outras declarações executa. No entanto, se false, o bloco else.

Considere o exemplo mostrado abaixo:

#!/usr/bin/zsh
eco -n "Digite um número:"
Leia num
Se [[$ num -gt 50]]
então
eco "$ num é maior que 50"
outro
eco "$ num não é maior que 50"
fi

No script de exemplo, pedimos ao usuário que insira um número. Se o número for maior que 50, ecoarmos que o número é maior que 50. Se false, ecoando o número não é maior que 50.

Abaixo está um exemplo de saída:

$ ./condicional.sh
Digite um número: 10
10 não é maior que 50
$ ./condicional.sh
Digite um número: 80
80 é maior que 50

Se ... elif ... else declarações

Em alguns casos, você pode querer testar várias condições em um bloco. Para implementar essa lógica, podemos usar a declaração se ... elif ... else.

Em uma declaração se ... elif ... else, adicionamos múltiplas expressões condicionais, onde apenas uma condição é avaliada para verdadeiro. Se a primeira condição for verdadeira, execute seu bloco; Caso contrário, verifique o segundo e continue até que todas as condições sejam verificadas.

A sintaxe para o bloco If ... Elif é:

#!/usr/bin/zsh
Se condição1
então
// Bloco 1
Elif Condition2
então
// Block2
Elif ConditionN
então
// blockn
outro
// se todas as condições avaliarem para falsos
fi

As condições são avaliadas sequencialmente. Se alguém avaliar como verdadeiro, seu bloco de código será executado. No entanto, se nenhuma das condições for verdadeira, o bloco else será executado.

O bloco else é opcional, mas recomendado para lidar com uma situação em que nenhuma condição é verdadeira.

Aqui está um exemplo de script:

Se [[$ num -eq 10]]
então
eco "número = $ num"
Elif [[$ num -eq 20]]
então
eco "número = $ num"
Elif [[$ num -eq 30]]
então
eco "número = $ num"
outro
eco "o número não é 10, 20 nem 30"
eco "número = $ num"
fi

O script acima implementa um bloco ELIF se o número inserido for 10, 20 ou 30. Caso contrário, os outros blocos para lidar com a condição, como mostrado na execução abaixo:

./condicional.sh
Digite um número: 10
Número = 10
Digite um número: 20
Número = 20
Digite um número: 30
Número = 30
Digite um número: 51
O número não é 10, 20 nem 30
Número = 51

Você pode ter tantas declarações Elif quanto você acha adequado. No entanto, se esses cenários ocorrerem, considere a implementação de um bloco de caso.

Operadores condicionais

Nos exemplos acima, implementamos operadores condicionais como -eq (igual a) e -gt (maior que). O ZSH suporta outros operadores condicionais, como:

  • a -eq b - Verdadeiro se A é numericamente igual a B
  • a -gt b - Verdadeiro se A é numericamente maior que B
  • a -lt b - Verdadeiro se A é numericamente menor que B
  • a -ne b - Verdadeiro é A não é numericamente igual a B
  • a -le b - Verdadeiro se A é numericamente menor ou igual a B
  • a -ge b - Verdadeiro se A é numericamente maior ou igual a B
  • a != b - Verdadeiro se a string a não for igual a string b
  • a = b - Verdadeiro se a string a é igual a string b
  • -Z String - Verdadeiro se o comprimento da corda for zero
  • -s String - Verdadeiro se o comprimento da corda for diferente de zero
  • -um arquivo - Verdadeiro se o arquivo existir
  • -arquivo h - Verdadeiro se o arquivo existir e for um link simbólico
  • -arquivo f - Verdadeiro se o arquivo existir e for um arquivo regular (não um diretório ou arquivo especial)
  • -Arquivo D - Verdadeiro se o arquivo existir e for um diretório
  • -e arquivo - Verdadeiro se o arquivo existir independentemente do tipo
  • -arquivo r - Verdadeiro se o arquivo existir e for legível pelo processo atual
  • -arquivo w - Verdadeiro se o arquivo existir e for escrito pelo processo atual
  • -X arquivo - Verdadeiro se o arquivo existir e for executável pelo processo atual
  • -G arquivo - True se o arquivo existe e tiver o conjunto de bits setgid
  • -s arquivo s - Verdadeiro se o arquivo existir e o tamanho for maior que zero
  • -você - True se houver arquivo e tiver um conjunto de bits setuid
  • -o arquivo - True se o arquivo existe e pertence ao ID atual
  • ! Exp - Verdadeiro se a expressão for falsa
  • a && b - Verdade se A e B forem verdadeiros
  • a || b - Verdadeiro se A ou B for verdadeiro

Os acima são exemplos de expressões condicionais que você pode usar em seus scripts ZSH. Confira a documentação para saber mais.

Conclusão

Este tutorial mostrou como implementar a lógica condicional em nossos scripts ZSH usando as instruções IF. Sinta -se à vontade para conferir a documentação de script ZSH para saber mais.

Obrigado pela leitura!