Intervalo Bash: como iterar sobre sequências geradas no shell

Bash Range How Iterate Over Sequences Generated Shell



Você pode iterar a sequência de números no bash de duas maneiras. Um é usando seq comando e outro é especificando intervalo em loop for. No seq comando, a sequência começa em um, o número aumenta em um em cada etapa e imprime cada número em cada linha até o limite superior por padrão. Se o número começar do limite superior, ele diminuirá em um em cada etapa. Normalmente, todos os números são interpretados como ponto flutuante, mas se a sequência começar com um inteiro, a lista de inteiros decimais será impressa. Se o comando seq puder ser executado com sucesso, ele retornará 0, caso contrário, retornará qualquer número diferente de zero. Você também pode iterar a sequência de números usando o loop for com intervalo. Ambos seq comando e loop for com intervalo são mostrados neste tutorial usando exemplos.

As opções do comando seq:

Você pode usar seq comando usando as seguintes opções.







-no

Esta opção é usada para preencher os números com zeros à esquerda para imprimir todos os números com largura igual.



-f formato

Esta opção é usada para imprimir números com um formato específico. O número flutuante pode ser formatado usando% f,% g e% e como caracteres de conversão. % g é usado como padrão.



-s string

Esta opção é usada para separar os números com string. O valor padrão é nova linha (‘ n’).





Exemplos de comando seq:

Você pode aplicar o comando seq de três maneiras. Você pode usar apenas o limite superior ou limite superior e inferior ou limite superior e inferior com valor de incremento ou decremento de cada etapa. Diferentes usos do comando seq com opções são mostrados nos exemplos a seguir.

Exemplo-1: comando seq sem opção

Quando apenas o limite superior é usado, o número começa em 1 e aumenta em um em cada etapa. O comando a seguir imprimirá o número de 1 a 4.



$seq 4

Saída:

Quando os dois valores são usados ​​com o comando seq, o primeiro valor será usado como número inicial e o segundo valor será usado como número final. O comando a seguir imprimirá o número de 7 a 15.

$seq 7 quinze

Saída:

Quando você usar três valores com o comando seq, o segundo valor será usado como valor de incremento ou decremento para cada etapa. Para o comando a seguir, o número inicial é 10, o número final é 1 e cada etapa será contada diminuindo 2.

$seq 10 -2 1

Saída:

Exemplo-2: seq com a opção –w

O comando a seguir imprimirá a saída adicionando zero à esquerda para o número de 1 a 9.

$seq -no0110

Saída:

Exemplo-3: seq com a opção –s

O comando a seguir usa - como separador para cada número de sequência. A seqüência de números será impressa adicionando - como separador.

$seq -s-8

Saída:

Exemplo-4: seq com a opção -f

O comando a seguir imprimirá 10 valores de data começando em 1. Aqui, a opção% g é usada para adicionar o número de sequência com outro valor de string.

$seq -f '% g / 04/2018' 10

saída:

Alcance Bash

O seguinte comando é usado para gerar a sequência de números de ponto flutuante usando% f. Aqui, o número começará em 3 e aumentará 0,8 em cada etapa e o último número será menor ou igual a 6.

$seq -f '% f' 3 0,8 6

Saída:

Exemplo 5: Grave a sequência em um arquivo

Se quiser salvar a sequência de números em um arquivo sem imprimir no console, você pode usar os seguintes comandos. O primeiro comando irá imprimir os números em um arquivo chamado seq.txt . O número será gerado de 5 a 20 e incrementado em 10 em cada etapa. O segundo comando é usado para ver o conteúdo de seq.txt Arquivo.

$ seq 5 10 20 | cat> seq.txt
$ cat seq.txt

Saída:

Exemplo-6: Usando seq in for loop

Suponha que você queira criar arquivos denominados fn1 a fn10 usando o loop for com seq. Crie um arquivo denominado sq1.bash e adicione o código a seguir. O loop for iterará 10 vezes usando o comando seq e criará 10 arquivos na sequência fn1, fn2, fn3… ..fn10.

#! / bin / bash
paraeuno ``seq 10``
Faz
tocarfn.$ i
feito

Saída:

Execute os seguintes comandos para executar o código do arquivo bash e verifique se os arquivos foram criados ou não.

$bashsq1.bash
$ls

Exemplos de loop for com intervalo:

Exemplo-7: Para loop com intervalo

A alternativa do comando seq é o intervalo. Você pode usar range in for loop para gerar uma sequência de números como seq. Escreva o seguinte código em um arquivo bash denominado sq2.bash . O loop irá iterar 5 vezes e imprimir a raiz quadrada de cada número em cada etapa.

#! / bin / bash
paranno {1..5}
Faz
((resultado= n*n))
jogou fora $ n quadrado=$ resultado
feito

Saída:

Execute o comando para executar o script do arquivo.

$bashsq2.bash

Exemplo-8: Para loop com intervalo e valor de incremento

Por padrão, o número é incrementado em um em cada etapa do intervalo, como seq. Você também pode alterar o valor do incremento no intervalo. Escreva o seguinte código em um arquivo bash denominado sq3.bash . O loop for no script irá iterar 5 vezes, cada etapa é incrementada em 2 e imprimir todos os números ímpares entre 1 e 10.

#! / bin / bash
jogou fora 'todos os números ímpares de 1 a 10 são'
paraeuno {1..10..2}
Faz
jogou fora $ i;
feito

Saída:

Execute o comando para executar o script do arquivo.

$bashsq3.bash

Se você deseja trabalhar com a sequência de números, pode usar qualquer uma das opções mostradas neste tutorial. Depois de concluir este tutorial, você será capaz de usar o comando seq e o loop for com intervalo de forma mais eficiente em seu script bash.