Bash Range: Hvordan iterere over sekvenser generert på skallet

Bash Range How Iterate Over Sequences Generated Shell



Du kan iterere rekkefølgen av tall i bash på to måter. Den ene er ved å bruke seq kommando og en annen er ved å spesifisere område i for loop. I seq kommando, starter sekvensen fra en, tallet øker med ett i hvert trinn og skriver ut hvert tall i hver linje opp til den øvre grensen som standard. Hvis tallet starter fra øvre grense, reduseres det med en i hvert trinn. Normalt tolkes alle tall som flytende punkt, men hvis sekvensen starter fra heltall, skrives listen over desimale heltall ut. Hvis seq-kommandoen kan utføres vellykket, returnerer den 0, ellers returnerer den et tall som ikke er null. Du kan også iterere rekkefølgen av tall ved hjelp av loop with range. Både seq kommando og for loop with range er vist i denne opplæringen ved hjelp av eksempler.

Alternativene for seq -kommando:

Du kan bruke seq kommandoen ved å bruke følgende alternativer.







-i

Dette alternativet brukes til å putte tallene med ledende nuller for å skrive ut alle tallene med samme bredde.



-f format

Dette alternativet brukes til å skrive ut nummer med et bestemt format. Flytende tall kan formateres ved å bruke %f, %g og %e som konverteringstegn. %g brukes som standard.



-s streng

Dette alternativet brukes til å skille tallene med streng. Standardverdien er ny linje (‘ n’).





Eksempler på seq -kommando:

Du kan bruke seq -kommandoen på tre måter. Du kan bare bruke øvre grense eller øvre og nedre grense eller øvre og nedre grense med økning eller reduksjon i hvert trinn. Ulike bruksområder for seq -kommandoen med alternativer er vist i de følgende eksemplene.

Eksempel-1: seq-kommando uten alternativ

Når bare øvre grense brukes, starter tallet fra 1 og øker med en i hvert trinn. Følgende kommando vil skrive ut nummeret fra 1 til 4.



$seq 4

Produksjon:

Når de to verdiene brukes med seq -kommando, vil den første verdien bli brukt som startnummer og den andre verdien vil bli brukt som sluttnummer. Følgende kommando vil skrive ut nummeret fra 7 til 15.

$seq 7 femten

Produksjon:

Når du vil bruke tre verdier med seq -kommando, vil den andre verdien bli brukt som øknings- eller reduseringsverdi for hvert trinn. For den følgende kommandoen er startnummeret 10, sluttnummeret er 1 og hvert trinn telles ved å redusere 2.

$seq 10 -2 1

Produksjon:

Eksempel-2: seq med –w alternativ

Følgende kommando vil skrive ut utskriften ved å legge til ledende null for tallet fra 1 til 9.

$seq -i0110

Produksjon:

Eksempel-3: seq med –s alternativ

Følgende kommando bruker - som separator for hvert sekvensnummer. Tallrekkefølgen skrives ut ved å legge til - som separator.

$seq -s-8

Produksjon:

Eksempel -4: seq med -f alternativ

Følgende kommando vil skrive ut 10 datoverdier fra 1. Her brukes alternativet %g for å legge til et sekvensnummer med en annen strengverdi.

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

produksjon:

Bash Range

Følgende kommando brukes til å generere sekvensen med flytende tall ved å bruke %f. Her starter tallet fra 3 og øker med 0,8 i hvert trinn, og det siste tallet vil være mindre enn eller lik 6.

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

Produksjon:

Eksempel-5: Skriv sekvensen i en fil

Hvis du vil lagre tallrekkefølgen i en fil uten å skrive ut i konsollen, kan du bruke følgende kommandoer. Den første kommandoen vil skrive ut tallene til en fil med navnet sek.txt . Tallet vil generere fra 5 til 20 og øke med 10 i hvert trinn. Den andre kommandoen brukes til å se innholdet i sek.txt fil.

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

Produksjon:

Eksempel-6: Bruke seq in for loop

Anta at du vil lage filer som heter fn1 til fn10 ved hjelp av loop med seq. Lag en fil som heter sq1.bash og legg til følgende kode. For loop vil iterere 10 ganger med seq -kommandoen og lage 10 filer i sekvensen fn1, fn2, fn3 ... ..fn10.

#!/bin/bash
tilJegi ``seq 10``
gjøre
ta påfn.$ i
gjort

Produksjon:

Kjør følgende kommandoer for å utføre koden til bash -filen og kontrollere at filene er opprettet eller ikke.

$bashsq1.bash
$ls

Eksempler på for loop med rekkevidde:

Eksempel-7: For sløyfe med rekkevidde

Alternativet til seq -kommandoen er rekkevidde. Du kan bruke rekkevidde in for loop for å generere sekvens av tall som sekvens. Skriv følgende kode i en bash -fil med navnet sq2.bash . Sløyfen gjentar seg fem ganger og skriver ut kvadratroten til hvert tall i hvert trinn.

#!/bin/bash
tilni {1..5}
gjøre
((resultat= n*n))
kastet ut $ n torget=$ resultat
gjort

Produksjon:

Kjør kommandoen for å utføre skriptet til filen.

$bashsq2.bash

Eksempel-8: For sløyfe med rekkevidde og økningsverdi

Som standard øker tallet med en i hvert trinn i området som seq. Du kan også endre økningsverdien i området. Skriv følgende kode i en bash -fil med navnet sq3.bash . For -sløyfen i skriptet vil gjenta seg 5 ganger, hvert trinn økes med 2 og skriver ut alle oddetall mellom 1 og 10.

#!/bin/bash
kastet ut 'alle oddetall fra 1 til 10 er'
tilJegi {1..10..2}
gjøre
kastet ut $ i;
gjort

Produksjon:

Kjør kommandoen for å utføre skriptet til filen.

$bashsq3.bash

Hvis du vil jobbe med tallrekkefølgen, kan du bruke et av alternativene som vises i denne opplæringen. Etter å ha fullført denne opplæringen, vil du kunne bruke seq -kommandoen og for loop med rekkevidde mer effektivt i bash -skriptet ditt.