W poprzednich wpisach przedstawiłem informacje związane z instrukcją warunkową, w tym chciałbym pokazać pętle for. Służy ona do przeprowadzenie czynności na zbiorze danych takich jak znaki, ciągi znaków czy lista plików. Może to wydawać się trudne, ale w przykładach przedstawię dokładnie o co chodzi.
Budowa pętli for
Podejście bash
Pętle for tworzy się na dwa sposoby, pierwszy jest podejściem przeznaczonym dla Bash, drugim jest podejście znane z języka C, w którym znana jest liczba elementów. Na początek typowo Bash’owe podejście, w której nie wiadomo ile jest elementów, dzięki temu jest bardziej uniwersalna.
Pętla rozpoczyna się od słowa kluczowego for, następnie musisz wstawić zmienną, czyli dowolny znak np. i (od interacja), następnie przejść po wszystkich elementach listy. Następnie możesz wykonać swoje polecenia i na koniec zakończyć poprzez słowo kluczowe done.
1 2 3 |
for <zmienna> in <lista> ; do polecenia done |
Podejście C
Takie podejście pozwala na przejście po wartościach, których ilość jest znana. Pętla for w takim schemacie jest wykorzystywana praktycznie w każdym języku programowania. Widzisz, że musisz zawrzeć warunek, który zakończy działanie pętli, tak aby nie wpaść w nieskończoność.
1 2 3 |
for ((inicjacja_zmiennej; warunek_kończący; zwiększanie/zmniejszanie_wartości)) ; do polecenia done |
Przykłady, przykłady
Podejście Bash
Używając pętli for może zmodyfikować nieco jej użycie, dostosowując ją do swojej wygody. Poniżej obydwa przykłady.
Skrypt pobierze po kolei cyfry 1,2 oraz 3 i wypisze je jako kolejna wartość zmiennej i.
1 2 3 4 |
#!/bin/bash for i in 1 2 3 ; do echo "Jestem $i" done |
Inne podejście, dla mnie łatwiejsze (mniej pisania), to delikatna modyfikacja. Jak widzisz słowo kluczowe do przechodzi niżej i nie ma średnika „;”. Wynik jest oczywiście identyczny, więc do Ciebie należy wybór w jaki sposób pisać kod.
1 2 3 4 5 |
#!/bin/bash for i in 1 2 3 do echo "Jestem $i" done |
Kolejnym przykładem niech będzie wylistowanie plików, które znajdują się w lokalnym katalogu (tym, w którym znajduje się skrypt).
Zmienna nazywa się f (ponieważ szukamy plików), następnie przy pomocy polecenia echo, wypiszesz ich listę na ekranie.
1 2 3 4 5 |
#!/bin/bash for f in * do echo "$f" done |
Podejście C
W tym podejściu szału nie będzie, pokaże w jaki sposób wypisać kolejna 5 cyfr, ale dla „ułatwienia” w odwrotnej kolejności.
Zmiennej i przypisałem wartość 5 jako startową, następnie zastosowałem warunek, który sprawdzi czy jej wartość jest większa lub równa 0, przy każdym przejściu zmienna i będzie zmniejszana o 1. Jak widzisz wszystko jest z góry ustalone, w przeciwieństwie do podejścia Bash, gdzie możliwe jest wylistowanie zmiennej liczby plików w katalogach.
1 2 3 4 5 |
#!/bin/bash for ((i=5;i>=0;i--)) do echo " $i" done |
Pętla w podejściu C nie zawsze będzie dostępna w Bash, ale można nieco nagiąć zasady, aby zadziałała.
Możesz użyć seq (sekwencji), która równie sprawnie przejście przez zadany zakres danych (czyli cyferek).
1 2 3 4 5 |
#!/bin/bash for i in `seq 0 5` do echo " $i" done |
Podsumowanie
Wstęp do pętli for masz za sobą, mam nadzieję, że się przyda. Jednak pętla for to nie wszystko w następnym wpisie przedstawię pętle while.
Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.
Link do formularza tutaj: https://beitadmin.pl/pomysly
Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).