Bash Range: Sådan gentages over sekvenser, der genereres på skallen

Bash Range How Iterate Over Sequences Generated Shell



Du kan iterere rækkefølgen af ​​tal i bash på to måder. Den ene er ved at bruge seq kommando og en anden er ved at angive område i for loop. I seq kommando, starter sekvensen fra en, antallet øges med et i hvert trin og udskriver hvert nummer i hver linje op til den øvre grænse som standard. Hvis tallet starter fra den øvre grænse, falder det med en i hvert trin. Normalt tolkes alle tal som flydende punkt, men hvis sekvensen starter fra et helt tal, udskrives listen over decimale heltal. Hvis seq-kommandoen kan udføres med succes, returnerer den 0, ellers returnerer den et ikke-nul tal. Du kan også iterere rækkefølgen af ​​tal ved hjælp af loop med range. Begge seq kommando og for loop med rækkevidde vises i denne vejledning ved hjælp af eksempler.

Mulighederne for seq -kommando:

Du kan bruge seq kommando ved hjælp af følgende muligheder.







-i

Denne indstilling bruges til at putte tallene med førende nuller til at udskrive alle numre med samme bredde.



-f format

Denne indstilling bruges til at udskrive nummer med et bestemt format. Flydende tal kan formateres ved at bruge %f, %g og %e som konverteringstegn. %g bruges som standard.



-s streng

Denne indstilling bruges til at adskille tallene med streng. Standardværdien er ny linje (‘ n’).





Eksempler på seq -kommando:

Du kan anvende seq -kommandoen på tre måder. Du kan kun bruge øvre grænse eller øvre og nedre grænse eller øvre og nedre grænse med stignings- eller formindskelsesværdi for hvert trin. Forskellige anvendelser af seq -kommandoen med muligheder vises i de følgende eksempler.

Eksempel-1: seq-kommando uden mulighed

Når kun den øvre grænse bruges, starter tallet fra 1 og øges med en i hvert trin. Følgende kommando udskriver tallet fra 1 til 4.



$seq 4

Produktion:

Når de to værdier bruges med seq -kommando, vil første værdi blive brugt som startnummer, og anden værdi vil blive brugt som slutnummer. Følgende kommando udskriver nummeret fra 7 til 15.

$seq 7 femten

Produktion:

Når du vil bruge tre værdier med seq -kommando, vil den anden værdi blive brugt som stignings- eller formindskelsesværdi for hvert trin. For den følgende kommando er startnummeret 10, slutnummeret er 1, og hvert trin tælles ved at reducere 2.

$seq 10 -2 1

Produktion:

Eksempel-2: seq med –w option

Den følgende kommando udskriver output ved at tilføje et førende nul for tallet fra 1 til 9.

$seq -i0110

Produktion:

Eksempel-3: seq med –s mulighed

Følgende kommando bruger - som separator for hvert sekvensnummer. Nummerrækkefølgen udskrives ved at tilføje - som separator.

$seq -s-8

Produktion:

Eksempel -4: seq med -f option

Følgende kommando udskriver 10 datoværdier fra 1. Her bruges %g mulighed for at tilføje sekvensnummer med anden strengværdi.

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

produktion:

Bash Range

Følgende kommando bruges til at generere sekvensen med flydende punktnummer ved hjælp af %f. Her starter tallet fra 3 og øges med 0,8 i hvert trin, og det sidste tal vil være mindre end eller lig med 6.

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

Produktion:

Eksempel-5: Skriv sekvensen i en fil

Hvis du vil gemme rækkefølgen i en fil uden at udskrive i konsollen, kan du bruge følgende kommandoer. Den første kommando udskriver tallene til en fil med navnet seq.txt . Tallet genereres fra 5 til 20 og øges med 10 i hvert trin. Den anden kommando bruges til at se indholdet af seq.txt fil.

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

Produktion:

Eksempel-6: Brug af seq in for loop

Antag, at du vil oprette filer med navnet fn1 til fn10 ved hjælp af loop med seq. Opret en fil med navnet sq1.bash, og tilføj følgende kode. For loop gentages 10 gange ved hjælp af kommandoen seq og opretter 10 filer i sekvensen fn1, fn2, fn3 ... ..fn10.

#!/bin/bash
tiljegi ``seq 10``
gøre
røre vedfn.$ i
Færdig

Produktion:

Kør følgende kommandoer for at udføre koden for bash -filen og kontrollere, at filerne er oprettet eller ej.

$bashsq1.bash
$ls

Eksempler på for loop med rækkevidde:

Eksempel-7: Til sløjfe med rækkevidde

Alternativet til seq -kommando er rækkevidde. Du kan bruge rækkevidde i for loop til at generere sekvens af tal som seq. Skriv følgende kode i en bash -fil med navnet sq2.bash . Sløjfen gentages fem gange og udskriver kvadratroden af ​​hvert tal i hvert trin.

#!/bin/bash
tilni {1..5}
gøre
((resultat= n*n))
smed ud $ n firkant=$ resultat
Færdig

Produktion:

Kør kommandoen for at udføre filens script.

$bashsq2.bash

Eksempel-8: Til loop med rækkevidde og stigningsværdi

Som standard øges antallet med en i hvert trin inden for rækkevidde som seq. Du kan også ændre stigningsværdien i området. Skriv følgende kode i en bash -fil med navnet sq3.bash . For -loop i scriptet gentages 5 gange, hvert trin øges med 2 og udskriver alle ulige tal mellem 1 til 10.

#!/bin/bash
smed ud 'alle ulige tal fra 1 til 10 er'
tiljegi {1..10..2}
gøre
smed ud $ i;
Færdig

Produktion:

Kør kommandoen for at udføre filens script.

$bashsq3.bash

Hvis du vil arbejde med rækkefølgen af ​​tal, kan du bruge en af ​​de muligheder, der vises i denne vejledning. Efter at have gennemført denne vejledning, vil du være i stand til at bruge seq -kommando og for loop med rækkevidde mere effektivt i dit bash -script.