Menu
CoddyTech

Pętla while

Część sekcji Podstawy ścieżki Terminal w Coddy. Lekcja 72 z 82.

Pętla for sprawdza się świetnie, gdy dokładnie wiesz, po jakich elementach iterować. Ale co, jeśli chcesz zapętlać się, aż zmieni się określony warunek? Właśnie wtedy przydaje się pętla while.

Pętla while działa tak długo, jak jej warunek pozostaje prawdziwy. Oto jej podstawowa struktura:

#!/bin/bash
count=1
while [ $count -le 5 ]; do
    echo "Count: $count"
    count=$((count + 1))
done

Ten skrypt wypisuje liczby od 1 do 5.

Pętla sprawdza, czy count jest mniejsze lub równe 5. Jeśli tak, wykonuje treść pętli, zwiększa licznik za pomocą $((...)) do obliczeń arytmetycznych i sprawdza ponownie.

Gdy count osiągnie 6, warunek staje się fałszywy i pętla się zatrzymuje.

Pętle while sprawdzają się doskonale, gdy nie wiesz z góry, ile iteracji potrzebujesz. Na przykład możesz prosić o dane wejściowe, dopóki użytkownik nie wpisze „quit”:

#!/bin/bash
input=""
while [ "$input" != "quit" ]; do
    read -p "Enter command (quit to exit): " input
    echo "You entered: $input"
done

Uważaj na pętle while. Jeśli warunek nigdy nie stanie się fałszywy, pętla będzie działać bez końca.

Zawsze upewnij się, że coś wewnątrz pętli w końcu zmienia warunek, na przykład przez zwiększenie licznika lub zaktualizowanie zmiennej na podstawie danych wprowadzonych przez użytkownika.

challenge icon

Wyzwanie

Łatwy

Utwórz skrypt powłoki o nazwie counter.sh, który używa pętli while do wypisania liczb od 1 do 4.

Twój skrypt powinien:

  1. Zaczynać się od wiersza shebang (#!/bin/bash)
  2. Utworzyć zmienną o nazwie num z początkową wartością 1
  3. Używać pętli while, która działa tak długo, jak num jest mniejsze lub równe 4
  4. Wewnątrz pętli wypisywać bieżącą liczbę w formacie: Number: [num]
  5. Zwiększać num o 1 po każdej iteracji, używając $((num + 1))

Nadaj skryptowi uprawnienia do wykonywania i uruchom go. Wynik powinien być następujący:

Number: 1
Number: 2
Number: 3
Number: 4

Podpowiedź: Użyj -le do porównania „mniejsze lub równe”. Pamiętaj, aby zwiększać licznik wewnątrz pętli za pomocą num=$((num + 1)), aby uniknąć nieskończonej pętli. Zakończ pętlę while słowem done.

Spróbuj swoich sił

Terminal
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online Terminal