Bash Range: cómo iterar sobre secuencias generadas en el shell

Bash Range How Iterate Over Sequences Generated Shell



Puede iterar la secuencia de números en bash de dos formas. Uno es usando seq comando y otro es especificando rango en bucle for. En seq comando, la secuencia comienza desde uno, el número se incrementa en uno en cada paso e imprime cada número en cada línea hasta el límite superior por defecto. Si el número comienza desde el límite superior, disminuye en uno en cada paso. Normalmente, todos los números se interpretan como punto flotante, pero si la secuencia comienza con un número entero, se imprimirá la lista de números enteros decimales. Si el comando seq se puede ejecutar correctamente, devuelve 0; de lo contrario, devuelve cualquier número distinto de cero. También puede iterar la secuencia de números usando el bucle for con rango. Ambos seq El comando y el bucle for con rango se muestran en este tutorial usando ejemplos.

Las opciones del comando seq:

Puedes usar seq comando utilizando las siguientes opciones.







-en

Esta opción se utiliza para rellenar los números con ceros a la izquierda para imprimir todos los números con el mismo ancho.



-f formato

Esta opción se utiliza para imprimir un número con un formato particular. El número flotante se puede formatear utilizando% f,% gy% e como caracteres de conversión. % g se utiliza por defecto.



-s cadena

Esta opción se usa para separar los números con una cadena. El valor predeterminado es nueva línea (' n').





Ejemplos de comando seq:

Puede aplicar el comando seq de tres formas. Puede usar solo el límite superior o el límite superior e inferior o el límite superior e inferior con el valor de incremento o decremento de cada paso. Los diferentes usos del comando seq con opciones se muestran en los siguientes ejemplos.

Ejemplo-1: comando seq sin opción

Cuando solo se usa el límite superior, el número comenzará desde 1 y se incrementará en uno en cada paso. El siguiente comando imprimirá el número del 1 al 4.



$seq 4

Producción:

Cuando los dos valores se usan con el comando seq, el primer valor se usará como número inicial y el segundo valor se usará como número final. El siguiente comando imprimirá el número del 7 al 15.

$seq 7 15

Producción:

Cuando utilice tres valores con el comando seq, el segundo valor se utilizará como valor de incremento o decremento para cada paso. Para el siguiente comando, el número inicial es 10, el número final es 1 y cada paso se contará disminuyendo 2.

$seq 10 -2 1

Producción:

Ejemplo-2: seq con la opción –w

El siguiente comando imprimirá la salida agregando un cero a la izquierda para el número del 1 al 9.

$seq -en0110

Producción:

Ejemplo-3: seq con opción –s

El siguiente comando usa - como separador para cada número de secuencia. La secuencia de números se imprimirá agregando - como separador.

$seq -s-8

Producción:

Ejemplo-4: seq con la opción -f

El siguiente comando imprimirá 10 valores de fecha comenzando desde 1. Aquí, la opción% g se usa para agregar un número de secuencia con otro valor de cadena.

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

producción:

Rango de golpe

El siguiente comando se usa para generar la secuencia del número de punto flotante usando% f. Aquí, el número comenzará desde 3 y se incrementará en 0.8 en cada paso y el último número será menor o igual a 6.

$seq -F '%F' 3 0.8 6

Producción:

Ejemplo-5: escribir la secuencia en un archivo

Si desea guardar la secuencia de números en un archivo sin imprimir en la consola, puede usar los siguientes comandos. El primer comando imprimirá los números en un archivo llamado seq.txt . El número se generará de 5 a 20 y se incrementará en 10 en cada paso. El segundo comando se utiliza para ver el contenido de seq.txt expediente.

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

Producción:

Ejemplo-6: Uso de seq in for loop

Suponga que desea crear archivos llamados fn1 a fn10 usando el bucle for con seq. Cree un archivo llamado sq1.bash y agregue el siguiente código. For loop iterará 10 veces usando el comando seq y creará 10 archivos en la secuencia fn1, fn2, fn3… ..fn10.

#! / bin / bash
porIen `seq 10`
hacer
tocarfn.$ i
hecho

Producción:

Ejecute los siguientes comandos para ejecutar el código del archivo bash y verifique que los archivos se hayan creado o no.

$intentosq1.bash
$ls

Ejemplos de bucle for con rango:

Ejemplo-7: Para bucle con rango

La alternativa del comando seq es rango. Puede usar range in for loop para generar una secuencia de números como seq. Escriba el siguiente código en un archivo bash llamado sq2.bash . El ciclo se repetirá 5 veces e imprimirá la raíz cuadrada de cada número en cada paso.

#! / bin / bash
pornorteen {1..5}
hacer
((resultado= n*norte))
echo $ n cuadrado=$ resultado
hecho

Producción:

Ejecute el comando para ejecutar el script del archivo.

$intentosq2.bash

Ejemplo-8: Para bucle con rango y valor de incremento

De forma predeterminada, el número se incrementa en uno en cada paso en el rango como seq. También puede cambiar el valor de incremento en el rango. Escriba el siguiente código en un archivo bash llamado sq3.bash . El bucle for en el script se repetirá 5 veces, cada paso se incrementa en 2 e imprime todos los números impares entre 1 y 10.

#! / bin / bash
echo 'todos los números impares del 1 al 10 son'
porIen {1..10..2}
hacer
echo $ i;
hecho

Producción:

Ejecute el comando para ejecutar el script del archivo.

$intentosq3.bash

Si desea trabajar con la secuencia de números, puede usar cualquiera de las opciones que se muestran en este tutorial. Después de completar este tutorial, podrá usar el comando seq y el bucle for con rango de manera más eficiente en su script bash.