Bash Range: Cum se repetă secvențele generate pe shell

Bash Range How Iterate Over Sequences Generated Shell



Puteți itera secvența numerelor în bash în două moduri. Una este folosirea sec comanda și alta este prin specificarea intervalului în buclă. În sec comandă, secvența începe de la unu, numărul crește cu unul în fiecare pas și tipărește fiecare număr din fiecare linie până la limita superioară în mod implicit. Dacă numărul începe de la limita superioară, atunci scade cu unul în fiecare pas. În mod normal, toate numerele sunt interpretate ca virgulă mobilă, dar dacă secvența începe de la numărul întreg, atunci se va tipări lista numerelor întregi zecimale. Dacă comanda seq se poate executa cu succes, atunci returnează 0, altfel returnează orice număr diferit de zero. De asemenea, puteți itera secvența numerelor folosind bucla for cu interval. Ambii sec comanda și pentru bucla cu interval sunt prezentate în acest tutorial folosind exemple.

Opțiunile comenzii seq:

Poți să folosești sec comandă utilizând următoarele opțiuni.







-în

Această opțiune este utilizată pentru a tampona numerele cu zerouri din partea de sus pentru a imprima toate numerele cu lățime egală.



-formatul f

Această opțiune este utilizată pentru a imprima numărul cu un anumit format. Numărul flotant poate fi formatat utilizând% f,% g și% e ca caractere de conversie. % g este folosit ca implicit.



-sir

Această opțiune este utilizată pentru a separa numerele cu șir. Valoarea implicită este linia nouă („ n”).





Exemple de comandă seq:

Puteți aplica comanda seq prin trei moduri. Puteți utiliza numai limita superioară sau limita superioară și inferioară sau limita superioară și inferioară cu creșterea sau diminuarea valorii fiecărui pas. Utilizările diferite ale comenzii seq cu opțiuni sunt prezentate în următoarele exemple.

Exemplu-1: comanda seq fără opțiune

Când se utilizează numai limita superioară, numărul va începe de la 1 și va crește cu unul în fiecare pas. Următoarea comandă va imprima numărul de la 1 la 4.



$sec 4

Ieșire:

Când cele două valori sunt folosite cu comanda seq, atunci prima valoare va fi utilizată ca număr de pornire și a doua valoare va fi utilizată ca număr final. Următoarea comandă va imprima numărul de la 7 la 15.

$sec 7 cincisprezece

Ieșire:

Când veți utiliza trei valori cu comanda seq, a doua valoare va fi utilizată ca valoare de creștere sau descreștere pentru fiecare pas. Pentru următoarea comandă, numărul inițial este 10, numărul final este 1 și fiecare pas va fi numărat prin scăderea 2.

$sec 10 -2 1

Ieșire:

Exemplul-2: seq cu opțiunea –w

Următoarea comandă va imprima ieșirea adăugând zero principal pentru numărul de la 1 la 9.

$sec -în0110

Ieșire:

Exemplul-3: seq cu opțiunea –s

Următoarea comandă utilizează - ca separator pentru fiecare număr de ordine. Secvența numerelor se va imprima adăugând - ca separator.

$sec -s-8

Ieșire:

Exemplul-4: seq cu opțiunea -f

Următoarea comandă va imprima 10 valori de dată începând de la 1. Aici, opțiunea% g este utilizată pentru a adăuga numărul secvenței cu altă valoare șir.

$sec -f „% g / 04/2018” 10

ieșire:

Bash Range

Următoarea comandă este utilizată pentru a genera secvența numărului în virgulă mobilă folosind% f. Aici, numărul va începe de la 3 și va crește cu 0,8 în fiecare pas, iar ultimul număr va fi mai mic sau egal cu 6.

$sec -f „% f” 3 0,8 6

Ieșire:

Exemplul-5: Scrieți secvența într-un fișier

Dacă doriți să salvați secvența de număr într-un fișier fără a imprima în consolă, puteți utiliza următoarele comenzi. Prima comandă va imprima numerele într-un fișier numit seq.txt . Numărul va genera de la 5 la 20 și va crește cu 10 în fiecare pas. A doua comandă este utilizată pentru a vizualiza conținutul seq.txt fişier.

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

Ieșire:

Exemplu-6: Utilizarea secvenței pentru buclă

Să presupunem că doriți să creați fișiere numite fn1 la fn10 folosind bucla for cu sec. Creați un fișier numit sq1.bash și adăugați următorul cod. For loop va itera de 10 ori folosind comanda seq și va crea 10 fișiere în secvența fn1, fn2, fn3 ... ..fn10.

#! / bin / bash
pentrueuîn sec 10
do
atingerefn.$ i
Terminat

Ieșire:

Rulați următoarele comenzi pentru a executa codul fișierului bash și verificați dacă fișierele sunt create sau nu.

$bashsq1.bash
$eu sunt

Exemple de buclă for cu interval:

Exemplu-7: Pentru bucla cu interval

Alternativa comenzii seq este range. Puteți utiliza range in for loop pentru a genera secvențe de numere precum sec. Scrieți următorul cod într-un fișier bash numit sq2.bash . Bucla se va itera de 5 ori și va imprima rădăcina pătrată a fiecărui număr din fiecare pas.

#! / bin / bash
pentrunîn {1..5}
do
((rezultat= n*n))
aruncat $ n pătrat=$ rezultat
Terminat

Ieșire:

Rulați comanda pentru a executa scriptul fișierului.

$bashsq2.bash

Exemplu-8: Pentru buclă cu interval și valoare incrementală

În mod implicit, numărul este incrementat cu unul în fiecare pas în interval, cum ar fi sec. De asemenea, puteți modifica valoarea incrementului în interval. Scrieți următorul cod într-un fișier bash numit sq3.bash . Bucla for din script se va itera de 5 ori, fiecare pas este incrementat cu 2 și va imprima toate numerele impare între 1 și 10.

#! / bin / bash
aruncat „toate numerele impare de la 1 la 10 sunt”
pentrueuîn {1..10..2}
do
aruncat $ i;
Terminat

Ieșire:

Rulați comanda pentru a executa scriptul fișierului.

$bashsq3.bash

Dacă doriți să lucrați cu secvența de numere, puteți utiliza oricare dintre opțiunile care sunt prezentate în acest tutorial. După finalizarea acestui tutorial, veți putea utiliza comanda seq și pentru bucla cu interval mai eficient în scriptul bash.