Składnia:
Do pętli można używać na dwa sposoby w Bash. Jednym ze sposobów jest „in-in”, a innym sposobem jest składnia w stylu C. Obie składni pokazano poniżej.
dla zmiennych na liście
Do
Sprawozdania
zrobione
Lub
dla ((expression1; ekspresja 2; ekspresja3)))
Do
Sprawozdania
zrobione
Przykład-1: Aby pętla odczytać zmienną wejściową
Lista predefiniowanych ciągów lub tablicy można łatwo odczytać za pomocą pętli „dla”, która jest pokazana w poprzednim samouczku dla pętli. W tym przykładzie można odczytać zawartość zmiennej wejściowej za pomocą „for” pętla. Utwórz plik o nazwie 'Forloop1.cii„Z następującym skryptem. Wartość wejściowa tekstu wielu słów zostanie pobrana po uruchomieniu skryptu. Tutaj pętla służy do podziału tekstu na słowa na podstawie białej przestrzeni i wydrukowania każdego słowa z pozycją.
Forloop1.cii
#!/bin/bash
echo „Wprowadź tekst wielu słów”
Przeczytaj tekst
i = 1
Dla Word in $ tekst
Do
echo "słowo nr $ i = $ Word"
((i = $ i+1))
zrobione
Wyjście:
Uruchom skrypt.
$ bash forloop1.cii
Tutaj pobrany jest tekst 5 słów, więc wydrukuje się pięć linii wyjściowych.
Przykład-2: dla pętli z instrukcją przerwy
Instrukcja „Break” jest używana wewnątrz ”dla„ pętli do zakończenia z pętli. Utwórz plik o nazwie 'Forloop2.cii' z następującym kodem. „Do” pętla jest używana tutaj do przeczytania listy czterech osób. Tutaj testowane są dwa warunki. Jeśli imienia osoby to 'Amir A kolor jest 'Niebieski' wtedy pętla zakończy się po wydrukowaniu imienia i koloru osoby. Wartości kolorów drugiej pętli będą wydrukowane do momentu dopasowania wartości koloru „niebieskiego”.
Forloop2.cii
na nazwisko w Watson Micheal Sinha Amir Lily
Do
Jeśli [$ name == 'amir']
Następnie
dla koloru w kolorze czerwonym zielonym niebieskim białym
Do
Jeśli [$ color == „niebieski”]
Następnie
echo „Ulubiony kolor $ nazwa to $ kolor”
przerwa
w przeciwnym razie
echo „Obecny kolor to $ kolor”
fi
zrobione
fi
zrobione
Wyjście:
Uruchom skrypt.
$ bash forloop2.cii
Następujące dane wyjściowe pojawią się po uruchomieniu skryptu. Po pierwsze, drukowane są dwa kolory, „czerwony” i „zielony”. Kiedy pojawiła się wartość „niebieska”, wydrukowała nazwę i wartość koloru osoby i zakończyła z pętli dla instrukcji „Break”.
Przykład-3: dla pętli z instrukcją kontynuowania
Oświadczenie „Kontynuuj” jest używane wewnątrz „dla„ pętli ”do pominięcia dowolnego stwierdzenia na podstawie określonego warunku. Utwórz plik o nazwie „Forloop3.cii' z następującym skryptem. Tutaj zmienna nazwana Kursy $ służy do przypisania wartości tekstowej. Pętla „Do” służy do odczytania zmiennej, $ kursy. Wartość tekstu zostanie podzielona na podstawie przestrzeni i odczytana przez „dla„ pętli. Kiedy wartość „Oracle” jest dopasowana $ kurs wtedy wydrukuje „Oracle nie jest teraz dostępna”. W przypadku innych wartości „klasa $ kurs działa”. Kurs, który nie jest dostępny.
Forloop3.cii
#!/bin/sh
kursy = "Java PHP Oracle VB.internet"
na kursy $
Do
Jeśli [$ kurs == 'Oracle']
Następnie
Echo „$ kurs nie jest teraz dostępny”
Kontynuować
fi
Echo „Klasa $ kurs działa”
zrobione
Wyjście:
Uruchom skrypt.
$ bash forloop3.cii
Następujące dane wyjściowe pojawią się po uruchomieniu skryptu.
Przykład-4: Używanie wyjścia polecenia jako listy
Wszelkie wyjście polecenia Bash można użyć w „for Loop za pomocą backtick (”). Utwórz plik o nazwie „Forloop4.cii' z następującym skryptem. Tutaj, „ls *.tekst' Polecenie jest używane w pętli. To polecenie wygeneruje listę pliku tekstowego z bieżącego katalogu. Pętla „dla” iterowuje każdą nazwę pliku z wyjścia polecenia i przechowuje ją w zmiennej $ nazwa pliku które wydrukują później. Tutaj, $ n Zmienna służy do wyświetlania numeru pliku.
Forloop4.cii
n = 1
dla nazwy pliku w „LS *.tekst'
Do
echo „plik no-$ n: $ nazwa pliku”
((n ++))
zrobione
Wyjście:
Uruchom skrypt.
$ bash forloop1.cii
Następujące dane wyjściowe pojawią się po uruchomieniu skryptu.
Przykład-5: Aby pętla przeczytać zakres
Pętla „Do” może być używana do odczytu zakresu danych. Poniższy przykład odczytał zakres znaku i wyszukiwanie każdego znaku istnieje w tekście lub nie. Utwórz plik o nazwie „Forloop5.cii' i dodaj następujący skrypt. Tutaj zasięg [a-z] jest używany w „for„ Loop. Oznacza to, że pętla „dla” będzie iterowana przez 26 razy dla każdej litery. Każda postać jest wyszukiwana w tekście $ za pomocą polecenia „AWK”. Jeśli znaleziono jakakolwiek postać, będzie przechowywać wartość w wyniku $. Następny. Wynik $ jest sprawdzany pod kątem dowolnej treści. Jeśli nie jest pusty, wiadomość będzie wydrukowana.
Forloop5.cii
Text = "Bash Scripting Language"
dla C w A… z
Do
wynik = 'printf "$ text" | awk "/$ c/" '
Jeśli [[wynik $ != ""]]
Następnie
echo „$ c istnieje w tekście”
fi
zrobione
Uruchom skrypt.
$ bash forloop5.cii
Tutaj alfabety, „B”, „L” i „S” znalezione w tekście „Bash Scripting Language”. Tak więc wydrukowane są trzy linie wyjściowe.
Przykład-6: Aby pętli odczytać zakres z przyrostem
Przykład pokazuje, w jaki sposób możesz użyć „do” pętli, aby znaleźć wszystkie liczby równe w określonym zakresie. Utwórz plik o nazwie „Forloop6.cii' i dodaj następujący skrypt. Tutaj w pętli stosuje się zakres [2-20]. Pętla będzie iterowana 10 razy i wydrukuje liczbę na każdym kroku.
Forloop6.cii
Echo „Drukowanie wszystkich liczb równych od 1 do 20”
Dla n w 2… 20… 2
Do
echo -n „$ n”
zrobione
printf "\ ndone \ n"
Uruchom skrypt.
$ bash forloop6.cii
Wszystkie liczby parzyste w ciągu 2-20 są drukowane po uruchomieniu skryptu.
Przykład-7: Aby pętli działać z plikiem
Ten przykład pokazuje, w jaki sposób możesz „pętla” do odczytania listy określonego pliku. Utwórz plik o nazwie, „Forloop7.cii' i dodaj następujący skrypt. Tutaj pętla jest używana do listy wszystkich plików tekstowych z bieżącego katalogu i zastąp rozszerzenie pliku z '.txt „to”.Doc '.
Forloop7.cii
echo „Zastąpienie rozszerzenia pliku wszystkiego pliku tekstowego na plik DOC."
dla nazwy pliku w *.tekst; Do
mv "$ fileName" "$ nazwa pliku%.tekst.Doc "
zrobione
Echo „Zastąpienie odbywa się z powodzeniem”
Wyjście:
Utwórz najpierw plik tekstowy, jeśli nie ma pliku tekstowego w bieżącym katalogu. Tutaj plik tekstowy o nazwie „NewFile.txt 'jest tworzony za pomocą polecenia „cat”.
$ cat> Newfile.tekst
Uruchom skrypt wspomniany powyżej.
$ bash forloop7.cii
Następnie sprawdź rozszerzenie jest zmieniane lub nie za pomocą polecenia „LS”.
Przykład-8: dla pętli z poleceniem sekwencji
Poniższy przykład pokazuje, w jaki sposób możesz użyć ”SEQ„In” dla „pętli do wydrukowania listy numeru sekwencyjnego. Polecenie „SEQ” działa podobnie jak zakres z przyrostem. Utwórz plik o nazwie „Forloop8.cii' i dodaj następujący skrypt. Pętla wydrukuje liczby od 1 do 30, pomijając trzy liczbę każdego kroku.
Forloop8.cii
Echo „Numery drukowania przez pomijanie 3”
dla SQ w $ (SEQ 1 3 30)
Do
Echo „Numer sekwencji: $ sq”
zrobione
Wyjście:
Uruchom skrypt.
$ bash forloop8.cii
Następujące dane wyjściowe pojawią się po uruchomieniu skryptu.
Przykład-9: Używanie Infinite for Loop
Nieskończona pętla może być używana do wykonywania wszelkich powtarzalnych zadań wiele razy, aż pojawi się określony warunek. Utwórz plik o nazwie „Forloop9.cii' z następującym skryptem, aby sprawdzić użycie nieskończonej pętli. Tutaj w pętli nie jest zdefiniowane żadne warunki zakończenia. Pętla wyświetla menu 5 list do czasu naciśnięcia numeru 5. Wydrukuje konkretną wiadomość dla innych liczb od 1 do 4 i ponownie wyświetli menu.
Forloop9.cii
Do (( ; ; ))
Do
Echo ”1. Wydrukuj komunikat sukcesu "
Echo ”2. Wydrukuj wiadomość informacyjną "
Echo ”3. Wydrukuj wiadomość ostrzegawczą "
Echo ”4. Wydrukuj komunikat o błędzie "
Echo ”5. Wyjście"
echo -n "Wybierz dowolną liczbę z [1-5]:"
Przeczytaj odpowiedź
sprawa „$ odpowiedź” w
1) echo "pomyślnie ukończone.";;
2) echo „Nieprawidłowe wejście” ;;
3) echo „Twój komputer ma niską baterię” ;;
4) Echo „Złała liczba argumentów” ;;
5) Wyjście 0 ;;
*) echo „niewłaściwy wybór” ;;
esac
zrobione
Uruchom skrypt.
$ bash forloop9.cii
Tutaj 9 jest naciskany za pierwszym razem, który nie istnieje na liście. W przypadku tego wejścia jest drukowane „niewłaściwy wybór” i ponownie wyświetla menu. Następnie 1 jest naciskany i wyświetlał wiadomość „pomyślnie ukończona”. Następnie 5 jest naciskane do zakończenia programu.
Przykład-10: Korzystanie z pętli bez listy.
Pętla „dla” może być używana bez żadnej listy, tablicy lub wyjścia polecenia. Jak możesz użyć „dla” pętli do odczytania argumentów wiersza poleceń, jest pokazany w tym przykładzie. Utwórz plik o nazwie, „Forloop10.cii' i dodaj następujący skrypt. Pętla będzie się iterować na podstawie liczby argumentów wiersza poleceń. $ zmienna licznika służy do znalezienia każdego etapu pętli, która jest zwiększana o 1 na każdym etapie.
Forloop10.cii
licznik = 1
do tekstu
Do
Jeśli [$ Counter -eq 2]
Następnie
str = „Mój ulubiony kolor to”
Elif [$ Counter -eq 3]
Następnie
str = „Kocham”
w przeciwnym razie
str = „Lubię”
fi
echo „$ str $ tekst”
((licznik = $ licznik+1))
zrobione
Uruchom skrypt z wartościami argumentów wiersza poleceń.
$ bash forloop10.SH Ice Blue Programming
Skrypt wydrukował wiadomość „Lubię lody”, gdy licznik $ to 1, „moim ulubionym kolorem jest niebieski”, gdy licznik $ to 2 i „Uwielbiam programowanie”, gdy licznik $ to 3.
Przykład-11: Czytanie plików i katalogów za pomocą pętli
Do wydrukowania listy plików i folderów bieżącego katalogu można użyć?. Utwórz plik o nazwie 'Forloop11.cii'i dodaj następujący skrypt. Tutaj symbol „*” jest używany w „pętli” do odczytania plików i folderów bieżącego katalogu. Pętla odczytaj każdy plik lub nazwę folderu na każdym kroku i wydrukuj go w terminalu z miejscem „tab”.
Forloop11.cii
printf „Pinting plików i folderów bieżącego katalogu… \ n \ n”
dla listy w *
Do
printf "$ lista \ t"
zrobione
printf "\ n \ ndone \ n"
Uruchom skrypt.
$ bash forloop11.cii
Nazwy plików i folderów bieżącego katalogu roboczego są drukowane po uruchomieniu skryptu.
Przykład-12: Korzystanie z przecinka w stylu C Bash dla pętli
Styl c w stylu „for” jest również obsługiwany w Bash, a to „dla„ pętla ma trzy wyrażenia. Są to inicjalizacja, warunek zakończenia i przyrost lub zmniejszenie. Ale za pomocą przecinka (,) możesz zdefiniować wiele zmiennych inicjalizacji w BASH, które pokazano w tym przykładzie. Utwórz plik o nazwie ”Forloop12.cii' i dodaj następujący skrypt. Pętla zagnieżdżona jest używana w tym skrypcie. Dwie zmienne inicjalizacyjne, $ Team, I $ Jersey są zadeklarowane w pierwszej pętli „dla”. Pierwsza pętla zostanie zakończona, kiedy $ Team będzie więcej niż 2. Nie ma zmiennej inicjalizacji w wewnętrznej pętli i pętli wewnętrznej, gdy zostanie zakończone tam, gdzie $ Jersey jest więcej niż 3. $ Jersey jest ustawiony na 1 po zakończeniu wewnętrznej pętli iteracji. Zatem zewnętrzna pętla będzie iterowana przez 2 razy, a wewnętrzna pętla będzie iterowana 3 razy.
Forloop12.cii
dla ((zespół = 1, Jersey = 1; zespół <= 2 ; team++))
Do
dla ((; Jersey <= 3 ; jersey++))
Do
echo „Team No-$ Team, Jersey No-$ Jersey”
zrobione
Jersey = 1
zrobione
Uruchom skrypt.
$ bash forloop12.cii
Następujące dane wyjściowe pojawią się po uruchomieniu skryptu.
W tym samouczku próbuje wyjaśnić wiele skutecznych zastosowań pętli „for”. Po ćwiczeniu powyższych przykładów, mam nadzieję, że czytelnicy otrzymają jasną wiedzę na temat „za” pętlę i 0able, aby właściwie używać tej pętli w skrypcie Bash.