Zakres bash

Zakres bash
Możesz iterować sekwencję liczb w Bash na dwa sposoby. Jednym z nich jest użycie SEQ polecenie, a inna jest określeniem zakresu w pętli. W SEQ polecenie, sekwencja zaczyna się od jednego, liczba przyrostowa o jeden na każdym etapie i wydrukuj każdą liczbę w każdej linii do górnego limitu. Jeśli liczba zaczyna się od górnej granicy, zmniejsza się o jeden w każdym kroku. Zwykle wszystkie liczby są interpretowane jako zmiennoprzecinkowy, ale jeśli sekwencja zaczyna się od liczby całkowitej, liczb całkowity. Jeśli polecenie SEQ może uda się udaremnić, zwraca 0; W przeciwnym razie zwraca dowolną liczbę niezerową. Możesz także iterować sekwencję liczb za pomocą pętli z zakresem. Obydwa SEQ polecenie i pętla z zakresem są pokazane w tym samouczku za pomocą przykładów.

Opcje polecenia SEQ:

Możesz użyć SEQ polecenie za pomocą następujących opcji.
-w

Ta opcja służy do wybicia liczb z wiodącymi zerami do wydrukowania wszystkich liczb o równej szerokości.
-Format f

Ta opcja służy do drukowania liczb w określonym formacie. Liczba pływająca można sformatować za pomocą %f, %g i %e jako znaków konwersji. %g jest używane jako domyślne.
-S ciąg

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

Przykłady polecenia SEQ:

Możesz zastosować polecenie SEQ na trzy sposoby. Możesz użyć tylko górnej granicy lub górnej i dolnej granicy lub górnej i dolnej granicy z wartością przyrostową lub spadkiem każdego kroku. Różne zastosowania polecenia SEQ z opcjami pokazano w następujących przykładach.

Przykład-1: komenda SEQ bez opcji

Gdy używany jest jedyny górny limit, liczba rozpocznie się od 1 i przyrostu o jeden na każdym etapie. Następujące polecenie wydrukuje liczbę od 1 do 4.

$ seq 4

Wyjście:
Po wykonaniu powyższego polecenia pojawi się następujące dane wyjściowe.

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

$ seq 7 15

Wyjście:
Po wykonaniu powyższego polecenia pojawi się następujące dane wyjściowe.

Podczas korzystania z trzech wartości z poleceniem SEQ, druga wartość będzie używana jako wartość przyrostowa lub spadku dla każdego kroku. Dla następującego polecenia liczba początkowa to 10, liczba końcowa to 1, a każdy krok zostanie policzony przez zmniejszenie 2.

$ seq 10 -2 1

Wyjście:
Po wykonaniu powyższego polecenia pojawi się następujące dane wyjściowe.

Przykład -2: SEQ z opcją -w

Następujące polecenie wydrukuje wyjście, dodając zero wiodące dla liczby od 1 do 10.

$ seq -w 01 10

Wyjście:

Po wykonaniu powyższego polecenia pojawi się następujące dane wyjściowe.

Przykład -3: SEQ z opcją -s

Poniższe polecenie używa „-” jako separator dla każdego numeru sekwencji. Sekwencja liczb zostanie wydrukowana przez dodanie „-” jako separator.

$ seq -s - 8

Wyjście:
Po wykonaniu powyższego polecenia pojawi się następujące dane wyjściowe.

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

Następujące polecenie wydrukuje 10 wartości daty, zaczynając od 1. Tutaj opcja „%g” służy do dodawania liczb sekwencji z innymi wartościami ciągów.

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

Wyjście:
Po wykonaniu powyższego polecenia pojawi się następujące dane wyjściowe.

Do generowania sekwencji liczb zmiennoprzecinkowych służy następującego polecenia za pomocą „%f”. Tutaj liczba rozpocznie się od 3 i przyrostu o 0.8 na każdym kroku, a ostatnia liczba będzie mniejsza lub równa 6.

$ seq -f "%f" 3 0.8 6

Wyjście:
Po wykonaniu powyższego polecenia pojawi się następujące dane wyjściowe.

Przykład-5: Napisz sekwencję w pliku

Jeśli chcesz zapisać sekwencję liczb w pliku bez drukowania w konsoli, możesz użyć następujących poleceń. Pierwsze polecenie wydrukuje numery na pliku o nazwie „SEQ.tekst". Liczba wygeneruje od 5 do 20 i zwiększy się na 10 na każdym kroku. Drugie polecenie wydrukuje zawartość „SEQ.tekst”Plik w terminalu.

$ seq 5 10 20 | Cat> SEQ.tekst
$ cat seq.tekst

Wyjście:
Po wykonaniu powyższego polecenia pojawi się następujące dane wyjściowe.

Przykład-6: użycie „SEQ” do utworzenia nazwy pliku

Załóżmy, że chcesz utworzyć pliki o nazwie FN1 do FN10 za pomocą pętli z SEQ. Utwórz plik o nazwie „SQ1.Bash ”i dodaj następujący kod. W przypadku pętli będzie iteracja przez 10 razy za pomocą polecenia „SEQ” i utworzy 10 plików w sekwencji FN1, FN2, FN3… FN10.

#!/bin/bash
# Wygeneruj 10 liczb sekwencji
bo w „seq 10”
Do
# Utwórz nazwę pliku
Dotknij fn $ i
zrobione

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

$ bash sq1.grzmotnąć
$ ls

Wyjście:
Po wykonaniu powyższych poleceń pojawi się następujące dane wyjściowe.

Przykłady pętli z zakresem:

Alternatywa polecenia „SEQ” jest zakres. Możesz użyć zakresu w pętli, aby wygenerować sekwencję liczb takich jak „SEQ”. Wyrażenie zasięgu jest zdefiniowane za pomocą nawiasów kręconych i podwójnych kropek. Składnia wyrażenia zakresu jest pokazana poniżej.

Składnia:

Start… Stop [… Przyrost]

Tutaj wartość Początek I Zatrzymywać się może być dowolną pozytywną liczbą całkowitą lub znakiem. Wartości te są obowiązkowe do definiowania ekspresji zakresu i oddzielone przez podwójne kropki. Wartość Przyrost może być dowolna liczba całkowita lub negatywna i jest opcjonalna. Ta wartość jest zdefiniowana po Zatrzymywać się wartość z podwójnymi kropkami. Różne zastosowania wyrażenia zasięgu pokazano w następujących przykładach.

Przykład-7: Korzystanie z zakresu z wartościami startowymi i stopami

Utwórz plik bash o nazwie „SQ2.grzmotnąć”Z następującym kodem. Pętla będzie iterowana 5 razy i wydrukuje pierwiastek kwadratowy każdej liczby w każdej iteracji.

#!/bin/bash
# Wygeneruj serię liczb od 1 do 5
Dla n w 1… 5
Do
# Oblicz korzeń kwadratowy
((wynik = n*n))
# Wydrukuj wartość kwadratową
echo $ n Square = $ wynik
zrobione

Uruchom następujące polecenie, aby wykonać powyższy skrypt.

$ bash sq2.grzmotnąć

Wyjście:
Następujące dane wyjściowe pojawi się po wykonaniu skryptu.

Przykład-8: Korzystanie z zakresu z dodatnią wartością przyrostową

Domyślnie liczba jest zwiększona o jeden na każdy krok w zakresie takim jak SEQ. Możesz także zmienić wartość przyrostową w zakresie. Napisz następujący kod w pliku bash o nazwie „SQ3.grzmotnąć". Pętla w skrypcie będzie iterowana 5 razy; Każdy krok jest zwiększany o 2 i drukuje wszystkie liczby nieparzyste od 1 do 10.

#!/bin/bash
echo „Wszystkie liczby nieparzyste od 1 do 10 są”
# Generuj liczby nieparzyste od 1 do 10
bo w 1… 10… 2
Do
# Wydrukuj wartość
echo $ i;
zrobione

Uruchom następujące polecenie, aby wykonać powyższy skrypt.

$ bash sq3.grzmotnąć

Wyjście:

Następujące dane wyjściowe pojawi się po wykonaniu skryptu.

Przykład-9: Korzystanie z zasięgu z wiodącym zero

Sekwencja liczb z wiodącym zero można wygenerować również za pomocą zakresu. Utwórz plik bash o nazwie SEQ4.grzmotnąć z następującym skryptem, aby wygenerować pięć sekwencyjnych liczb o zero od 1 do 5, dodając ciąg „id-” z przodu każdej liczby.

#!/bin/bash
Echo „Generuj wartości ID:”
# Zdefiniuj wartość początkowa zakresu z wiodącym zero
Dla I in 01… 5
Do
# Wydrukuj wartość z „id-”
echo „id-$ i”
zrobione

Uruchom następujące polecenie, aby wykonać powyższy skrypt.

$ bash sq4.grzmotnąć

Wyjście:
Następujące dane wyjściowe pojawi się po wykonaniu skryptu.

Przykład-10: Korzystanie z zakresu o wartości przyrostowej ujemnej

Utwórz plik bash o nazwie SEQ5.grzmotnąć z następującym skryptem, aby wygenerować sześć sekwencyjnych liczb w kolejności malejącej, zaczynając od 10 i zmniejszonego o 2 na każdym etapie.

#!/bin/bash
Echo „Generuj liczby parzyste w kolejności malejącej:”
# Zdefiniuj wartość początkowa zakresu o wartości ujemnej przyrostu
bo w 10… 0… -2
Do
# Wydrukuj wartość z „id-”
echo „Wartość to $ i”
zrobione

Uruchom następujące polecenie, aby wykonać powyższy skrypt.

$ bash sq5.grzmotnąć

Wyjście:
Następujące dane wyjściowe pojawi się po wykonaniu skryptu.

Przykład-11: Generuj liczby sekwencyjne z wartościami znaków i liczb

Utwórz plik bash o nazwie SEQ6.grzmotnąć z następującym skryptem w celu wygenerowania danych wyjściowych na podstawie dwóch wartości zakresu. Zewnętrzna pętla wygeneruje trzy znaki od A do C, a pętla wewnętrzna wygeneruje trzy liczby od 1 do 3.

#!/bin/bash
Echo „Seria sekwencyjna z alfabetem i liczbą:”
# Zdefiniuj zakres z alfabetami
dla Val1 w A… c
Do
# Zdefiniuj zakres z liczbami
dla VAL2 w 01… 3
Do
# Wydrukuj wartość, zatrzymując alfabet i numer
echo $ val1 $ val2
zrobione
zrobione

Uruchom następujące polecenie, aby wykonać powyższy skrypt.

$ bash sq6.grzmotnąć

Wyjście:
Następujące dane wyjściowe pojawi się po wykonaniu skryptu.

Przykład-12: Zastosowanie zakresu z prefiksem i sufiksem

Utwórz plik bash o nazwie SEQ7.grzmotnąć z następującym skryptem do wygenerowania 5 nazw plików, dodając prefiks i sufiks z zakresem liczb. W scenariuszu ”profil„to wartość prefiksu i”.png'jest wartością sufiksu.

#!/bin/bash
echo „Seria nazw plików to:”
# Wygeneruj pięć nazw plików z rozszerzeniem „PNG”
dla nazwy w profilu 1… 5.png; Do
# Wydrukuj nazwę pliku
echo „nazwa pliku: $ name”
zrobione

Uruchom następujące polecenie, aby wykonać powyższy skrypt.

$ bash sq7.grzmotnąć

Wyjście:
Następujące dane wyjściowe pojawi się po wykonaniu skryptu.

Wniosek:

W tym samouczku pokazano dwa sposoby generowania sekwencji liczb za pomocą wielu przykładów. Jednym ze sposobów jest polecenie „seq”, a innym sposobem jest użycie zasięgu z pętlą. Użytkownicy BASH będą mogli wydajnie wygenerować sekwencję liczb po ćwiczeniu przykładów tego samouczka.