Android

Bash for loop

Shell Scripting - For Loops

Shell Scripting - For Loops

Spisu treści:

Anonim

Pętle są jedną z podstawowych koncepcji języków programowania. Pętle są przydatne, gdy chcesz uruchamiać serię poleceń w kółko, dopóki nie zostanie spełniony określony warunek.

W językach skryptowych, takich jak Bash, pętle są przydatne do automatyzacji powtarzalnych zadań.

Istnieją trzy podstawowe konstrukcje pętli w skryptach Bash, dla pętli, pętli while i pętli till.

W tym samouczku omówimy podstawy pętli for w Bash. Pokażemy także, jak korzystać z instrukcji break i kontynuuj, aby zmienić przepływ pętli.

Standardowy Bash For Loop

Pętla for iteruje listę elementów i wykonuje podany zestaw poleceń.

Pętla Bash for ma następującą postać:

for item in do done

Lista może być ciągiem znaków oddzielonych spacjami, zakresem liczb, wynikiem polecenia, tablicą i tak dalej.

Pętla nad łańcuchami

W poniższym przykładzie pętla będzie iterować każdy element na liście ciągów, a element zmienny zostanie ustawiony na bieżący element.

for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done

Pętla wygeneruje następujące dane wyjściowe:

Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium

Pętla w zakresie liczb

Możesz użyć wyrażenia sekwencji, aby określić zakres liczb lub znaków, definiując początek i punkt końcowy zakresu. Wyrażenie sekwencji ma następującą postać:

{START..END}

W poniższym przykładzie pętla będzie iterować wszystkie liczby od 0 do 3.

for i in {0..3} do echo "Number: $i" done

Number: 0 Number: 1 Number: 2 Number: 3

Począwszy od wersji Bash 4, możliwe jest również określenie przyrostu przy użyciu zakresów. Wyrażenie przyjmuje następującą postać:

{START..END..INCREMENT}

for i in {0..20..5} do echo "Number: $i" done

Number: 0 Number: 5 Number: 10 Number: 15 Number: 20

Pętla elementów tablicy

Możesz także użyć pętli for do iteracji po tablicy elementów:

W poniższym przykładzie definiujemy tablicę BOOKS i iterujemy każdy element tablicy.

BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby') for book in "${BOOKS}"; do echo "Book: $book" done

Book: In Search of Lost Time Book: Don Quixote Book: Ulysses Book: The Great Gatsby

Bash w stylu C dla pętli

Składnia stylu C dla pętli ma następującą postać:

for ((INITIALIZATION; TEST; STEP)) do done

Część INITIALIZATION jest wykonywana tylko raz po uruchomieniu pętli. Następnie oceniana jest część TESTOWA. Jeśli jest to fałsz, pętla for jest zakończona. Jeśli TEST jest prawdziwy, polecenia w treści pętli for są wykonywane, a część STEP jest aktualizowana.

W poniższym kodzie pętla gwiazdy inicjuje i = 0 , a następnie przed każdą iteracją sprawdza, czy i ≤ 10 . Jeśli true, drukuje bieżącą wartość i i przez 1 ( i++ ), w przeciwnym razie pętla się kończy.

for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done

Pętla wykona iterację 1001 razy i wygeneruje następujące dane wyjściowe:

Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000

Złam i kontynuuj instrukcje

Do sterowania wykonywaniem pętli for można użyć instrukcji break i continu.

Oświadczenie o złamaniu

Instrukcja break kończy bieżącą pętlę i przekazuje kontrolę programu do instrukcji następującej po instrukcji zakończonej. Zwykle służy do zakończenia pętli, gdy spełniony jest określony warunek.

W poniższym przykładzie używamy instrukcji if, aby zakończyć wykonywanie pętli, gdy bieżący iterowany element będzie równy „Lithium”.

for element in Hydrogen Helium Lithium Beryllium; do if]; then break fi echo "Element: $element" done echo 'All Done!'

Element: Hydrogen Element: Helium All Done!

Kontynuuj Instrukcja

Instrukcja Kontynuacja kończy bieżącą iterację pętli i przekazuje kontrolę programu do następnej iteracji pętli.

W poniższym przykładzie wykonujemy iterację w zakresie liczb, a gdy bieżący element iteracji jest równy „2”, instrukcja Ciąg spowoduje, że wykonanie powróci do początku pętli i przejdzie do następnej iteracji.

for i in {1..5}; do if]; then continue fi echo "Number: $i" done

Number: 1 Number: 3 Number: 4 Number: 5

Przykłady Bash dla pętli

Zmienianie nazw plików ze spacjami w nazwie pliku

Poniższy przykład pokazuje, jak użyć pętli Bash for do zmiany nazwy wszystkich plików w bieżącym katalogu ze spacją w ich nazwach poprzez zamianę spacji na podkreślenie.

for file in *\ *; do mv "$file" "${file// /_}" done

Podzielmy kod wiersz po wierszu:

  • Pierwszy wiersz tworzy pętlę for i iteruje listę wszystkich plików ze spacją w nazwie. Wyrażenie *\ * tworzy listę. Drugi wiersz dotyczy każdego elementu listy i przenosi plik do nowego, zastępując spację znakiem podkreślenia ( _ ). Część ${file// /_} używa rozszerzenia parametru powłoki do zastąpienia wzorca w parametrze łańcuchem. done oznacza koniec segmentu pętli.

Zmiana rozszerzenia pliku

Poniższy przykład pokazuje, jak użyć pętli Bash for do zmiany nazw wszystkich plików z rozszerzeniem.jpeg w bieżącym katalogu, zastępując rozszerzenie pliku z.jpeg na.jpg.

for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done

Przeanalizujmy kod linia po linii:

  • Pierwszy wiersz tworzy pętlę for i przechodzi przez listę wszystkich plików kończących się na „.jpeg”. Drugi wiersz dotyczy każdej pozycji na liście i przenosi plik do nowej, zastępując „.jpeg” na „.jpg”. ${file%.jpeg} aby usunąć część „.jpeg” z nazwy pliku przy użyciu rozwinięcia parametrów powłoki wskazuje koniec segmentu pętli.

Wniosek

Do tej pory powinieneś dobrze rozumieć, jak korzystać z pętli bash dla iteracji po listach.

terminal pętli bash