Omówienie pętli w skryptach powłoki

W przypadku pętli w Skrypcie powłoki w tym powiedzmy, że jeśli chcemy powtarzać zadanie lub operację, możemy napisać ten sam kod tyle razy, co jest zadaniem czasochłonnym i mało wydajnym. Aby uniknąć tego typu scenariuszy, możemy używać pętli takich jak pętla for w języku programowania. Pętla for służy zatem do wykonywania określonego zadania, takiego jak dodawanie / mnożenie lub dowolna inna operacja przez określoną liczbę razy, aż warunek zakończenia zostanie spełniony w dowolnym systemie operacyjnym. Nie musimy ciągle pisać tego samego kodu za pomocą pętli for.

Składnia pętli for

Składnia pętli for w skryptach powłoki może być reprezentowana na różne sposoby, jak poniżej:

1. Pierwsza metoda składni

for var in list
do
command1
command2
done

Z powyższego przykładu mamy wstępnie zdefiniowane słowa kluczowe lub wbudowane słowa kluczowe, takie jak for, do, done i in. Podczas gdy lista jest listą zmiennych lub listą słów lub listą liczb, a var jest nazwą zmiennej podczas tej iteracji. Jeśli lista nie zostanie podana, bash przyjmie parametr pozycyjny, który przekazaliśmy w powłoce. W powyższej pętli for wykona wszystkie polecenia, które są pomiędzy zrobić i wykonane n razy, gdy n jest wielkością listy. Na przykład, jeśli wielkość listy wynosi 5 i ma numery od 1 do 5, to podczas pierwszej iteracji 1 będzie przechowywana w var, a operacje na var będą wykonywane przez ciało pętli for, w której znajdują się polecenia.

2. Druga metoda składni

for ( ( expr1; expr2; expr3 ))
do
command1
command2
….
done

W powyższej składni, jeśli zaobserwujemy, ta składnia jest podobna do składni pętli for w języku programowania c. W pętli for istnieją trzy wyrażenia, w których pierwsze wyrażenie służy do inicjalizacji, drugie do sprawdzania warunkowego, a trzecie do aktualizowania iteratora. Wykonanie powyższej pętli for rozpocznie się w ten sposób, zanim rozpocznie się pierwsza iteracja expr1, co oznacza, że ​​inicjalizacja zostanie wykonana później niż operacje / komendy między do i zrobione będą iteracyjnie, dopóki expr2 nie zmieni się na true, a po każdej iteracji expr3 aktualizuje wartość iteratora (licznik), aby operacje były wykonywane na następnym elemencie lub wartości na liście, tablicy lub ciągu.

Schemat przepływu - dla pętli w skryptach powłoki

Rozważmy przykład pętli for i omówimy jej przepływ za pomocą diagramu przepływu.

for filename in *.dat
do
echo cp $fname orig_$fname
done

Na powyższym diagramie przepływu wyjaśniamy przepływ pętli for, która iteruje się po liście nazw plików, i istnieją cztery etapy przepływu, takie jak przepływ procesu, wartość zmiennej, proces i wyjście standardowe. W przepływie procesu wyjaśnia, kiedy rozpoczyna się pętla for, wartość iteratora, sprawdzając, czy warunek jest spełniony, a następnie uruchamia proces, w przeciwnym razie zakończ proces. W zmiennej wartości, iteracja po iteracji, otrzymamy w nim nazwę pliku, taką jak textfile.dat, a podczas procesu wykonuje polecenie echo, w którym wyświetla kopię instrukcji ze starą nazwą pliku i nową nazwą pliku na standardowym wyjściu. Jest to zatem przepływ pętli for, która iteruje po liście nazw plików wejściowych.

Wynik:

Jak działa pętla w skryptach powłoki?

Skrypt pętli w powłoce działa w następujący sposób, gdy powłoka widzi słowo kluczowe, ponieważ wie, że musi powtórzyć zestaw poleceń jeden raz dla każdego elementu na liście. Za każdym razem, gdy uruchamia się iteracja, element na liście jest przypisywany do zmiennej var, a var jest przetwarzany przez listę poleceń obecnych w pętli między wykonaniem a wykonaniem, wykonywanych przed przejściem do następnego elementu na liście lub następnej iteracji. Będziemy uzyskiwać dostęp do wartości w zmiennej za pomocą $ przed zmienną, aby podczas przetwarzania skryptu powłoki wartość w zmiennej zastępowała zamiast niej.

Przykład:

for filename in *.txt
do
ls filename
done

W powyższym programie przekazujemy listę plików .txt jako dane wejściowe do pętli for, a nazwa zmiennej to nazwa pliku, w którym plik .txt zapisze, a następnie przetworzy nazwę pliku, umieszczając plik .txt w nazwie pliku, a następnie ten sam proces będzie powtarzany aż do zakończenia przetwarzania wszystkich plików .txt.

Wynik:

Przykłady pętli for

Do tej pory omawialiśmy, jak działa pętla w skrypcie powłoki i różnych składniach. Zobaczmy teraz kilka przykładów i przejrzyjmy je i wyjaśnijmy każdy przykład tego, co robi

Przykład 1

Daj nam listę wartości statycznych jako danych wejściowych do pętli for, a sposób jej wykonania zostanie przedstawiony poniżej:

for a day in Fri Thu Wed Tue Mon
do
echo “Todays day is $day”
done

W powyższym przykładzie nie powinniśmy przekazywać wartości wejściowych za pomocą, ponieważ jeśli miniemy, to jeśli uznamy, że separator jest również wartością typu „Pt”, nie powinniśmy wyświetlać wartości przy użyciu podwójnych cudzysłowów „jeśli przekażemy je z podwójnymi cudzysłowami, skrypt powłoki potraktuje wszystkie wartości jako jedną wartość.

Przykład o / p: Dzisiaj jest: pią czw czw śro wt pon.

Wynik:

Przykład nr 2

Zobaczmy teraz inny przykład, w którym używamy dla przed listą wprowadzania, jak poniżej:

Month = “Jan Feb Mar Apr May Jun”
for mon in $Month
do
echo “Month is $mon”
done

W powyższym przykładzie wykonujemy to samo wykonanie pętli for jak w powyższym przykładzie, ale zamiast listy wejściowej odczyt będzie wykonywany przy użyciu słowa kluczowego „in”. W skryptach powłoki każda zmienna musi być reprezentowana w podwójnych cudzysłowach, ale istnieje kilka wyjątków, na przykład, jeśli użyjemy podwójnych cudzysłowów w $ Month powyżej dla linii pętli, wówczas potraktuje całe słowa jako pojedynczą linię. Musimy się tym zająć.

Wynik:

Przykład nr 3

Teraz napiszemy dla pętli bez listy danych wejściowych w instrukcji for loop, zamiast tego pobierze dane wejściowe z argumentów pozycyjnych do skryptu i przykład jak poniżej:

Pozwól nam na powłoki nazwy skryptu jako sample.sh i jego zawartość, jak poniżej:

for num
do
echo “Number is $num”
done
./sample.sh 1 2 3 4 5

W powyższym przykładzie dane wejściowe do pętli for są przekazywane z listy argumentów dostarczonych do skryptu, aby dla każdego argumentu przetwarzał wszystkie polecenia i wyświetlał dane wyjściowe, dopóki wszystkie argumenty nie zostaną iterowane.

Wynik:

Wniosek - dla pętli w skryptach powłoki

Wreszcie chodzi o pętlę w skryptach powłoki. Omówiliśmy, czym jest pętla w skryptach powłoki, składnia pętli, diagram przepływu wyjaśniający przepływ pętli, jak pętla działa w powłoce i przykłady pętli w skryptach powłoki. Mam nadzieję, że dobrze zrozumiesz pętlę, jak używać jej w skryptach powłoki i wykonywać ją po przeczytaniu tego artykułu.

Polecane artykuły

Jest to przewodnik po pętli For w skryptach powłoki. Tutaj omawiamy wprowadzenie, Jak działa pętla w skryptach powłoki, Diagram przepływu i Przykład pętli. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. Pętle w R.
  2. Spark SQL Dataframe
  3. Wielowymiarowa baza danych
  4. Korzyści z wizualizacji danych

Kategoria: