Como fazer um loop para script Zsh

Como fazer um loop para script Zsh
Cada sysadmin deve saber como implementar scripts para automatizar seu fluxo de trabalho. Embora tenhamos muitas ferramentas de automação, como Ansible, o script continua sendo uma ferramenta crítica para automatizar tarefas no mundo Linux.

Este tutorial analisará os loops, um conceito fundamental em scripts e programação em geral. Vamos nos concentrar especificamente em como os loops funcionam.

Para estrutura básica de loop

Antes de usarmos exemplos de scripts para loops, discutimos a estrutura. Para loops adotar a sintaxe geral:

para em
fazer

feito

Você pode passar na lista de itens como uma matriz, uma série de literais de cordas (separados por espaços) ou uma variedade de números.

Vamos agora considerar alguns exemplos e ilustrar como funcionar loops.

Exemplo 1

Considere o exemplo mostrado abaixo. Voltamos sobre uma lista de valores de string e imprimimos a string atual no loop.

#!/usr/bin/zsh
Para beber em vinho de café com chá aquático
fazer
eco "bebida: $ bebida"
feito

Depois de executar o script, você deve ver cada item na lista impressa, conforme mostrado no exemplo abaixo:

$ ./para.sh
Beber água
Beba chá
Bebida: café
Beba vinho

Exemplo 2

Você também pode especificar o valor da lista no loop for uma sequência de números. Você faz isso definindo os valores iniciantes e finais. A sintaxe está abaixo:

Inicio fim

Veja o exemplo para o loop abaixo dos valores de loop 10 vezes.

#!/usr/bin/zsh
para i em 1… 10
fazer
eco "Número: $ i"
feito

Você deve obter todos os números entre 1 e 10 impressos para o terminal.

Número 1
Número 2
..
Número: 8
Número 9
Número: 10

Exemplo 3

Em alguns casos, ao usar o intervalo de números, você precisa pular os valores por um intervalo específico. Por exemplo, para imprimir os números pares entre 10 e 20, você precisará usar um intervalo de 2.

Você pode fazer isso especificando o incremento como o terceiro argumento dos intervalos de números.

A sintaxe é:

Start… fim… incremento

Abaixo está um código de exemplo:

#!/usr/bin/zsh
para eu em 10… 20… 2
fazer
eco "Número: $ i"
feito

O código de exemplo acima deve imprimir todos os números pares entre 10 e 20. Abaixo está um exemplo de saída:

Número: 10
Número: 12
..
Número: 20

Exemplo 4

Outro caso de uso comum para um loop é iterar em uma variedade de itens. Considere o exemplo mostrado abaixo:

#!/usr/bin/zsh
bancos de dados = ('mysql' 'pósgresql' 'mongodb' 'redis' 'fauna' 'barata db')
para db em "$ bancos de dados [@]"; do
eco "banco de dados: $ db"
feito

O acima para o loop iterará cada item na matriz e o imprimirá.

Banco de dados: MySQL
Banco de dados: PostGresql
..
Banco de dados: fauna
Banco de dados: DB de barata

Quebrar e continuar as declarações

Você também pode usar o intervalo e continuar as palavras -chave para controlar o fluxo do loop dentro de um script ZSH.

Vamos começar com a palavra -chave quebrada.

Quebrar palavra -chave

Você pode usar a palavra -chave quebrada para encerrar o fluxo de loop atual e passar o controle para o seguinte bloco. O principal uso disso é encerrar o fluxo de loop se uma condição específica for verdadeira.

Por exemplo:

#!/usr/bin/zsh
Para DB em Mysql PostgreSql MongoDB Redis Fauna Cockroach; Faça
se [["$ db" == 'MongoDB']]; então
quebrar
fi
eco "banco de dados: $ db"
feito

No exemplo acima, lidamos com o item e quebramos o fluxo de loop se o item atual for mongodb.

Aqui está um exemplo de saída:

Banco de dados: MySQL
Banco de dados: PostGresql

Continue a palavra -chave

Por outro lado, a palavra -chave continua sai da iteração atual do loop e pula para a próxima iteração.

Por exemplo:

#!/usr/bin/zsh
para i em 1… 10; fazer
se [["$ i" == '5']]; então
continuar
fi
eco "Número: $ i"
feito

Quando o loop estiver na 5ª iteração, ele pulará e pulará para o próximo valor no intervalo. Essa funcionalidade levará ao 5º valor não ser impresso.

Conclusão

Este tutorial discutiu como implementar loops em um script ZSH. É bom observar que o ZSH é baseado em bash; Portanto, a funcionalidade de loop criada para o Bash também funcionará para o ZSH.