Bash Range: com iterar les seqüències generades a l'intèrpret d'ordres

Bash Range How Iterate Over Sequences Generated Shell



Podeu iterar la seqüència de nombres en bash de dues maneres. Un és utilitzar seq i un altre és especificant l'interval per a bucle. En seq ordre, la seqüència comença a partir d’un, el nombre augmenta un a cada pas i s’imprimeix cada número de cada línia fins al límit superior per defecte. Si el número comença des del límit superior, disminueix un en cada pas. Normalment, tots els números s’interpreten com a coma flotant, però si la seqüència comença a partir d’un nombre enter, s’imprimirà la llista de nombres enters decimals. Si l'ordre seq pot executar-se correctament, torna 0, en cas contrari, torna qualsevol número diferent de zero. També podeu iterar la seqüència de nombres mitjançant el bucle for amb abast. Tots dos seq L'ordre i el bucle for amb rang es mostren en aquest tutorial mitjançant exemples.

Les opcions de l'ordre seq:

Pots fer servir seq mitjançant les opcions següents.







-en

Aquesta opció s'utilitza per tapar els números amb zeros inicials per imprimir tots els números amb la mateixa amplada.



-f format

Aquesta opció s’utilitza per imprimir un número amb un format concret. El nombre flotant es pot formatar utilitzant% f,% g i% e com a caràcters de conversió. % g s'utilitza per defecte.



-s string

Aquesta opció s’utilitza per separar els números amb una cadena. El valor per defecte és la línia nova (' n').





Exemples d'ordre seq:

Podeu aplicar l'ordre seq de tres maneres. Podeu utilitzar només el límit superior o superior i inferior o límit superior i inferior amb el valor d’increment o disminució de cada pas. Els exemples següents mostren diferents usos de l’ordre seq amb opcions.

Exemple-1: ordre seq sense opció

Quan només s'utilitza el límit superior, el número començarà a partir d'1 i s'incrementarà un a cada pas. L'ordre següent imprimirà el número de l'1 al 4.



$seq 4

Sortida:

Quan s'utilitzen els dos valors amb l'ordre seq, s'utilitzarà el primer valor com a número inicial i el segon valor com a número final. L'ordre següent imprimirà el número del 7 al 15.

$seq 7 15

Sortida:

Quan utilitzeu tres valors amb l'ordre seq, el segon valor s'utilitzarà com a valor d'increment o decrement per a cada pas. Per a l'ordre següent, el número inicial és 10, el número final és 1 i cada pas es comptarà disminuint 2.

$seq 10 -2 1

Sortida:

Exemple-2: seq amb l'opció –w

L'ordre següent imprimirà la sortida afegint un zero inicial per al número de l'1 al 9.

$seq -en0110

Sortida:

Exemple-3: seq amb l'opció –s

L'ordre següent utilitza - com a separador per a cada número de seqüència. La seqüència de números s'imprimirà afegint - com a separador.

$seq -s-8

Sortida:

Exemple-4: seq amb l'opció -f

L'ordre següent imprimirà 10 valors de data a partir de 1. Aquí, s'utilitza l'opció% g per afegir un número de seqüència amb un altre valor de cadena.

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

sortida:

Gamma Bash

L'ordre següent s'utilitza per generar la seqüència del número de coma flotant mitjançant% f. Aquí, el número començarà a partir de 3 i s’incrementarà 0,8 a cada pas i l’últim número serà inferior o igual a 6.

$seq -f '% f' 3 0.8 6

Sortida:

Exemple-5: escriviu la seqüència en un fitxer

Si voleu desar la seqüència de número en un fitxer sense imprimir a la consola, podeu utilitzar les ordres següents. La primera ordre imprimirà els números en un fitxer anomenat seq.txt . El nombre es generarà de 5 a 20 i augmentarà en 10 en cada pas. La segona ordre s'utilitza per veure el contingut de seq.txt dossier.

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

Sortida:

Exemple-6: utilitzant seq in for loop

Suposem que voleu crear fitxers anomenats fn1 a fn10 mitjançant el bucle for amb seq. Creeu un fitxer anomenat sq1.bash i afegiu el codi següent. For loop repetirà 10 vegades mitjançant l'ordre seq i crearà 10 fitxers a la seqüència fn1, fn2, fn3 ... ..fn10.

#! / bin / bash
perjodins `seq 10`
fer
tocarfn.$ i
fet

Sortida:

Executeu les ordres següents per executar el codi del fitxer bash i comproveu que els fitxers estiguin creats o no.

$bashsq1.bash
$ls

Exemples de bucle for amb rang:

Exemple-7: per a bucle amb rang

L'alternativa de l'ordre seq és l'interval. Podeu fer servir range in for loop per generar seqüències de nombres com la seq. Escriviu el següent codi en un fitxer bash anomenat sq2.bash . El bucle repetirà cinc vegades i imprimirà l'arrel quadrada de cada número en cada pas.

#! / bin / bash
perndins {1..5}
fer
((resultat= n*n))
trobo $ n quadrat=$ resultat
fet

Sortida:

Executeu l'ordre per executar l'script del fitxer.

$bashsq2.bash

Exemple-8: per a bucle amb rang i valor d'increment

Per defecte, el número s'incrementa un en cada pas de l'interval, com ara la seq. També podeu canviar el valor d’increment a l’interval. Escriviu el següent codi en un fitxer bash anomenat sq3.bash . El bucle for de l'script s'iterarà cinc vegades, cada pas s'incrementa en 2 i imprimeix tots els números senars entre l'1 i el 10.

#! / bin / bash
trobo 'tots els números senars de l'1 al 10 són'
perjodins {1..10..2}
fer
trobo $ i;
fet

Sortida:

Executeu l'ordre per executar l'script del fitxer.

$bashsq3.bash

Si voleu treballar amb la seqüència de nombres, podeu utilitzar qualsevol de les opcions que es mostren en aquest tutorial. Després de completar aquest tutorial, podreu utilitzar l'ordre seq i loop for amb un rang més eficient al vostre script bash.