Zakres Bash: Jak iterować po sekwencjach wygenerowanych na powłoce

Bash Range How Iterate Over Sequences Generated Shell



Możesz iterować sekwencję liczb w bash na dwa sposoby. Jednym z nich jest użycie następny polecenie, a drugi to określenie zakresu w pętli for. w następny polecenie, sekwencja zaczyna się od jednego, liczba zwiększa się o jeden w każdym kroku i domyślnie drukuje każdą liczbę w każdym wierszu aż do górnego limitu. Jeśli liczba zaczyna się od górnego limitu, to zmniejsza się o jeden w każdym kroku. Zwykle wszystkie liczby są interpretowane jako zmiennoprzecinkowe, ale jeśli sekwencja zaczyna się od liczby całkowitej, zostanie wydrukowana lista dziesiętnych liczb całkowitych. Jeśli polecenie seq może zostać wykonane pomyślnie, zwraca 0, w przeciwnym razie zwraca dowolną liczbę niezerową. Możesz także iterować sekwencję liczb za pomocą pętli for z zakresem. Obie następny polecenie i pętla for z zakresem są pokazane w tym samouczku na przykładach.

Opcje polecenia seq:

Możesz użyć następny polecenie, używając następujących opcji.







-w

Ta opcja służy do uzupełniania liczb wiodącymi zerami w celu wydrukowania wszystkich liczb o równej szerokości.



-f format

Ta opcja służy do drukowania numeru w określonym formacie. Liczba zmiennoprzecinkowa może być sformatowana przy użyciu %f, %g i %e jako znaków konwersji. Domyślnie używane jest %g.



-s ciąg

Ta opcja służy do oddzielania liczb ciągiem. Wartość domyślna to nowa linia („ ”).





Przykłady polecenia seq:

Polecenie seq można zastosować na trzy sposoby. Możesz użyć tylko górnego limitu lub górnego i dolnego limitu lub górnego i dolnego limitu z wartością zwiększania lub zmniejszania każdego kroku. W poniższych przykładach pokazano różne zastosowania polecenia seq z opcjami.

Przykład-1: komenda seq bez opcji

Gdy używany jest tylko górny limit, liczba zacznie się od 1 i będzie zwiększana o jeden w każdym kroku. Następujące polecenie spowoduje wydrukowanie liczby od 1 do 4.



$następny 4

Wyjście:

Gdy te dwie wartości są używane z poleceniem seq, pierwsza wartość będzie używana jako numer początkowy, a druga wartość jako numer końcowy. Następujące polecenie wydrukuje liczbę od 7 do 15.

$następny 7 piętnaście

Wyjście:

Jeśli użyjesz trzech wartości z poleceniem seq, druga wartość będzie używana jako wartość inkrementacji lub dekrementacji dla każdego kroku. Dla poniższego polecenia numer początkowy to 10, numer końcowy to 1, a każdy krok będzie liczony przez zmniejszenie o 2.

$następny 10 -2 1

Wyjście:

Przykład-2: seq z opcją –w

Następujące polecenie spowoduje wydrukowanie danych wyjściowych przez dodanie wiodącego zera dla liczby od 1 do 9.

$następny -w0110

Wyjście:

Przykład-3: seq z opcją –s

Poniższe polecenie używa - jako separatora dla każdego numeru sekwencyjnego. Sekwencja liczb zostanie wydrukowana po dodaniu - jako separatora.

$następny -s-8

Wyjście:

Przykład-4: seq z opcją -f

Następujące polecenie wyświetli 10 wartości dat, zaczynając od 1. Tutaj opcja %g służy do dodania numeru sekwencji z inną wartością ciągu.

$następny -F „%g/04/2018” 10

wyjście:

Zakres Bash

Poniższe polecenie służy do generowania sekwencji liczby zmiennoprzecinkowej przy użyciu %f . Tutaj liczba zaczyna się od 3 i zwiększa się o 0,8 w każdym kroku, a ostatnia liczba będzie mniejsza lub równa 6.

$następny -F '%F' 3 0,8 6

Wyjście:

Przykład-5: Zapisz sekwencję w pliku

Jeśli chcesz zapisać sekwencję numerów do pliku bez drukowania w konsoli, możesz użyć następujących poleceń. Pierwsze polecenie wypisze liczby do pliku o nazwie seq.txt . Liczba będzie generować od 5 do 20 i zwiększać się o 10 w każdym kroku. Drugie polecenie służy do przeglądania zawartości seq.txt plik.

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

Wyjście:

Przykład-6: Używanie seq w pętli for

Załóżmy, że chcesz utworzyć pliki o nazwach od fn1 do fn10 za pomocą pętli for z sekw. Utwórz plik o nazwie sq1.bash i dodaj następujący kod. Pętla For wykona iterację 10 razy za pomocą polecenia seq i utworzy 10 plików w sekwencji fn1, fn2,fn3…..fn10.

#!/kosz/bash
dlaiw ``następny 10``
robić
dotykaćprzyp.$i
Gotowe

Wyjście:

Uruchom następujące polecenia, aby wykonać kod pliku bash i sprawdź, czy pliki są tworzone, czy nie.

$grzmotnąćsq1.bash
$ls

Przykłady pętli for z zakresem:

Przykład-7: Dla pętli z zakresem

Alternatywą polecenia seq jest zasięg. Możesz użyć zakresu w pętli for do wygenerowania sekwencji liczb, takich jak seq. Napisz następujący kod w pliku bash o nazwie sq2.bash . Pętla wykona 5 iteracji i wypisze pierwiastek kwadratowy z każdej liczby w każdym kroku.

#!/kosz/bash
dlanw {1...5}
robić
((wynik=n*n))
wyrzucił $n kwadrat=$wynik
Gotowe

Wyjście:

Uruchom polecenie, aby wykonać skrypt pliku.

$grzmotnąćsq2.bash

Przykład-8: Dla pętli z zakresem i wartością przyrostu

Domyślnie liczba jest zwiększana o jeden w każdym kroku w zakresie, jak nast. Możesz także zmienić wartość przyrostu w zakresie. Napisz następujący kod w pliku bash o nazwie sq3.bash . Pętla for w skrypcie wykona 5 iteracji, każdy krok jest zwiększany o 2 i wyświetla wszystkie liczby nieparzyste od 1 do 10.

#!/kosz/bash
wyrzucił „wszystkie liczby nieparzyste od 1 do 10 to”
dlaiw {1...10...2}
robić
wyrzucił $i;
Gotowe

Wyjście:

Uruchom polecenie, aby wykonać skrypt pliku.

$grzmotnąćsq3.bash

Jeśli chcesz pracować z sekwencją liczb, możesz użyć dowolnej z opcji przedstawionych w tym samouczku. Po ukończeniu tego samouczka będziesz mógł wydajniej używać polecenia seq i pętli for z zakresem w swoim skrypcie bash.