Bash Range

Bash Range
Du kan iterere sekvensen av tall i bash på to måter. Den ene er ved å bruke seq Kommando, og en annen er ved å spesifisere området for loop. I SEQ Kommando starter sekvensen fra en, antall trinn med ett i hvert trinn, og skriver ut hvert nummer i hver linje opp til den øvre grensen som standard. Hvis tallet starter fra den øvre grensen, reduserer det med en i hvert trinn. Normalt tolkes alle tall som et flytende punkt, men hvis sekvensen starter fra et heltall, vil desimaltallene skrive ut. Hvis SEQ -kommandoen kan utføre vellykket, returnerer den 0; Ellers returnerer det noe ikke-null nummer. Du kan også iterere sekvensen av tall som bruker for loop med rekkevidde. Både seq Kommando og for loop med rekkevidde vises i denne opplæringen ved å bruke eksempler.

Alternativene til SEQ -kommandoen:

Du kan bruke SEQ Kommando ved å bruke følgende alternativer.
-w

Dette alternativet brukes til å tømme tallene med ledende nuller for å skrive ut alle tall med lik bredde.
-f format

Dette alternativet brukes til å skrive ut tall i et bestemt format. Det flytende antallet 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 en ny linje ('\ n').

Eksempler på SEQ -kommando:

Du kan bruke SEQ -kommandoen på tre måter. Du kan bare bruke den øvre grensen eller øvre og nedre grense eller øvre og nedre grense med økning eller reduksjonsverdi for hvert trinn. Ulike bruksområder av SEQ -kommandoen med alternativer vises i følgende eksempler.

Eksempel 1: SEQ-kommando uten alternativet

Når den eneste øvre grensen brukes, starter antallet fra 1 og øker med en i hvert trinn. Følgende kommando vil skrive ut nummeret fra 1 til 4.

$ SEQ 4

Produksjon:
Følgende utgang vises etter å ha utført kommandoen ovenfor.

Når de to verdiene brukes med SEQ -kommandoen, 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 15

Produksjon:
Følgende utgang vises etter å ha utført kommandoen ovenfor.

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

$ SEQ 10 -2 1

Produksjon:
Følgende utgang vises etter å ha utført kommandoen ovenfor.

Eksempel -2: SEQ med -w -alternativet

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

$ SEQ -W 01 10

Produksjon:

Følgende utgang vises etter å ha utført kommandoen ovenfor.

Eksempel -3: SEQ med alternativ

Følgende kommando bruker “-“ Som separator for hvert sekvensnummer. Sekvensen av tall vil bli skrevet ut ved å legge til “-“ Som separatoren.

$ SEQ -S - 8

Produksjon:
Følgende utgang vises etter å ha utført kommandoen ovenfor.

Eksempel -4: SEQ med -f -alternativet

Følgende kommando vil skrive ut 10 datoverdier fra 1. Her brukes alternativet "%G" til å legge til sekvensnumre med andre strengverdier.

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

Produksjon:
Følgende utgang vises etter å ha utført kommandoen ovenfor.

Følgende kommando brukes til å generere sekvensen av flytende punkttall ved å bruke "%f". Her starter antallet 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:
Følgende utgang vises etter å ha utført kommandoen ovenfor.

Eksempel-5: Skriv sekvensen i en fil

Hvis du vil lagre sekvensen av tall 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 som heter “seq.tekst”. Antallet vil generere fra 5 til 20 og øke med 10 i hvert trinn. Den andre kommandoen vil skrive ut innholdet i “seq.tekst”Fil i terminalen.

$ SEQ 5 10 20 | Cat> Seq.tekst
$ katt seq.tekst

Produksjon:
Følgende utgang vises etter å ha utført kommandoen ovenfor.

Eksempel-6: Bruk av 'SEQ' for å lage filnavnet

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 for 10 ganger ved å bruke 'SEQ' -kommando og lage 10 filer i sekvensen FN1, FN2, FN3… FN10.

#!/bin/bash
# Generer 10 sekvensnumre
for jeg i 'seq 10'
gjøre
# Opprett filnavnet
berør fn $ i
Ferdig

Kjør følgende kommandoer for å utføre bashfilens kode og sjekk om filene er opprettet eller ikke.

$ BASH SQ1.bash
$ ls

Produksjon:
Følgende utgang vises etter å ha utført kommandoene ovenfor.

Eksempler på for loop med rekkevidde:

Alternativet til 'SEQ' -kommandoen er rekkevidde. Du kan bruke Range In for Loop for å generere sekvensen av tall som 'SEQ'. Områdeuttrykket er definert ved å bruke krøllete parenteser og doble prikker. Syntaksen til områdeuttrykket er vist nedenfor.

Syntaks:

Start ... stopp [... økning]

Her, verdien av Start og Stoppe kan være et hvilket som helst positivt heltall eller karakter. Disse verdiene er obligatoriske for å definere områdeuttrykk og atskilt med doble prikker. Verdien av Økning kan være et hvilket som helst positivt eller negativt heltall, og det er valgfritt. Denne verdien er definert etter Stoppe verdi med doble prikker. Ulike bruksområder av rekkeviddeuttrykk har vist i følgende eksempler.

Eksempel-7: Bruke område med start- og stoppverdier

Lag en bash -fil som heter “SQ2.bash”Med følgende kode. Løkken vil iterere i 5 ganger og skrive ut kvadratroten til hvert nummer i hver iterasjon.

#!/bin/bash
# Generer serien med tall fra 1 til 5
for n i 1… 5
gjøre
# Beregn kvadratroten
((resultat = n*n))
# Skriv ut kvadratverdien
ekko $ n firkant = $ resultat
Ferdig

Kjør følgende kommando for å utføre skriptet ovenfor.

$ BASH SQ2.bash

Produksjon:
Følgende utgang vises etter å ha utført skriptet.

Eksempel-8: Bruker rekkevidde med positiv økningsverdi

Som standard øker tallet med en i hvert trinn i et område som SEQ. Du kan også endre økningsverdien i rekkevidde. Skriv følgende kode i en bash -fil som heter “SQ3.bash“. For loop i skriptet vil iterere 5 ganger; Hvert trinn økes med 2 og skriver ut alle oddetall mellom 1 til 10.

#!/bin/bash
ekko "Alle oddetall fra 1 til 10 er"
# Generer oddetall fra 1 til 10
for jeg i 1… 10… 2
gjøre
# Skriv ut verdien
ekko $ i;
Ferdig

Kjør følgende kommando for å utføre skriptet ovenfor.

$ BASH SQ3.bash

Produksjon:

Følgende utgang vises etter å ha utført skriptet.

Eksempel-9: Bruker rekkevidde med ledende null

Sekvensen av tall med ledende null kan genereres ved å bruke rekkevidde også. Lag en bash -fil som heter SEQ4.bash med følgende skript for å generere fem sekvensielle tall med ledende null fra 1 til 5 ved å legge til strengen 'id-' foran hvert nummer.

#!/bin/bash
ekko "Generer ID -verdier:"
# Definer startverdien til området med ledende null
for jeg i 01… 5
gjøre
# Skriv ut verdien med 'Id-'
ekko "id- $ i"
Ferdig

Kjør følgende kommando for å utføre skriptet ovenfor.

$ BASH SQ4.bash

Produksjon:
Følgende utgang vises etter å ha utført skriptet.

Eksempel-10: Bruke område med negativ økningsverdi

Lag en bash -fil som heter SEQ5.bash med følgende skript for å generere seks sekvensielle tall i synkende rekkefølge fra 10 og dekrementert med 2 i hvert trinn.

#!/bin/bash
ekko "genererer jevnt tall i synkende rekkefølge:"
# Definer startverdien til området med en negativ økningsverdi
for jeg i 10… 0… -2
gjøre
# Skriv ut verdien med 'Id-'
ekko "Verdien er $ i"
Ferdig

Kjør følgende kommando for å utføre skriptet ovenfor.

$ BASH SQ5.bash

Produksjon:
Følgende utgang vises etter å ha utført skriptet.

Eksempel-11: Generer sekvensielle tall med karakter- og tallverdier

Lag en bash -fil som heter SEQ6.bash med følgende skript for å generere utgang basert på to rekkeverdier. Den ytre sløyfen vil generere tre tegn fra A til C, og den indre sløyfen vil generere tre tall fra 1 til 3.

#!/bin/bash
ekko "Sekvensiell serie med alfabet og tall:"
# Definer området med alfabeter
for val1 i a… c
gjøre
# Definer området med tall
for val2 i 01… 3
gjøre
# Skriv ut verdien ved å innkalle alfabetet og tallet
ekko $ val1 $ val2
Ferdig
Ferdig

Kjør følgende kommando for å utføre skriptet ovenfor.

$ BASH SQ6.bash

Produksjon:
Følgende utgang vises etter å ha utført skriptet.

Eksempel-12: Bruk av rekkevidde med prefiks og suffiks

Lag en bash -fil som heter SEQ7.bash med følgende skript for å generere 5 filnavn ved å legge til prefiks og suffiks med tallområdet. I manuset, 'profil'Er prefiksverdien og'.png'er suffiksverdien.

#!/bin/bash
ekko "Serien med filnavn er:"
# Generer fem filnavn med utvidelsen 'PNG'
For navn i profil 1… 5.PNG; gjøre
# Skriv ut filnavnet
ekko "Filnavn: $ Navn"
Ferdig

Kjør følgende kommando for å utføre skriptet ovenfor.

$ BASH SQ7.bash

Produksjon:
Følgende utgang vises etter å ha utført skriptet.

Konklusjon:

To måter å generere tallsekvensen har blitt vist i denne opplæringen ved å bruke flere eksempler på. En måte er 'SEQ' -kommandoen, og en annen måte er å bruke rekkevidde med for loop. Bash -brukerne vil kunne generere sekvensen av tall effektivt etter å ha praktisert eksemplene på denne opplæringen.