Instrukcja warunkowa if
Część sekcji Podstawy ścieżki Terminal w Coddy. Lekcja 70 z 82.
Jak dotąd Twoje skrypty wykonują każde polecenie od góry do dołu, nie podejmując żadnych decyzji. A co, jeśli chcesz, aby skrypt robił różne rzeczy w zależności od określonych warunków? Właśnie do tego służy instrukcja if.
Instrukcja if pozwala skryptowi podejmować decyzje. Sprawdza, czy warunek jest prawdziwy, a jeśli tak, wykonuje blok kodu. Oto podstawowa struktura:
#!/bin/bash
age=18
if [ $age -ge 18 ]; then
echo "You are an adult"
fiWarunek umieszcza się w nawiasach kwadratowych, ze spacjami wokół niego. Słowo kluczowe then oznacza początek kodu do wykonania, a fi (if zapisane wspak) kończy instrukcję.
Możesz też obsłużyć przypadek, gdy warunek jest fałszywy, używając else:
#!/bin/bash
age=15
if [ $age -ge 18 ]; then
echo "You are an adult"
else
echo "You are a minor"
fiTypowe operatory porównania liczb to -eq (równe), -ne (nierówne), -gt (większe niż), -lt (mniejsze niż), -ge (większe lub równe) i -le (mniejsze lub równe). W przypadku ciągów znaków użyj = do sprawdzania równości i != do sprawdzania nierówności.
Pamiętaj, aby zawsze umieszczać spacje wewnątrz nawiasów i ujmować zmienne w cudzysłowy, aby uniknąć błędów związanych z pustymi wartościami.
Wyzwanie
ŁatwyUtwórz skrypt powłoki o nazwie check_score.sh, który używa instrukcji if do oceny wyniku testu.
Twój skrypt powinien:
- Zaczynać się od wiersza shebang (
#!/bin/bash) - Utworzyć zmienną o nazwie
scorez wartością75 - Użyć instrukcji if, aby sprawdzić, czy wynik jest większy lub równy 70
- Jeśli warunek jest prawdziwy, wypisać:
You passed! - Jeśli warunek jest fałszywy, wypisać:
You failed.
Nadaj skryptowi uprawnienia do wykonywania i uruchom go. Ponieważ wynik wynosi 75, dane wyjściowe powinny być następujące:
You passed!Podpowiedź: Pamiętaj, aby użyć
-gedo porównania „większy lub równy”, umieścić spacje wewnątrz nawiasów kwadratowych i zakończyć instrukcję if słowemfi.Nie ma tu edytora plików, więc zapisz plik bezpośrednio z powłoki, używając dokumentu here: wpisz
cat > check_score.sh << 'EOF', następnie wiersze skryptu, a na końcu osobny wiersz zawierający tylkoEOF.
Spróbuj swoich sił
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Katalogi
Utwórz katalogSkopiuj katalogPrzenieś i zmień nazwę kataloguUsuń katalogPodsumowanie — operacje na katalogach7Zawartość plików
Początek i koniecLiczba słówPolecenie sortPolecenie uniqPodstawy grepgrep z opcjamiPowtórka – detektyw tekstu10Projekt analizatora logów
Przegląd projektuPrzeglądanie pliku logów13Podstawy skryptów powłoki
Czym jest skrypt powłokiTworzenie i uruchamianie skryptuZmienne w skryptachDane wejściowe od użytkownika w skryptachInstrukcja warunkowa ifPętla forPętla whilePodsumowanie — zgadywanie liczby2Nawigacja
Wyświetlanie bieżącego kataloguWyświetlanie plikówZmiana kataloguŚcieżki bezwzględne i względneKatalog domowy i głównyPowtórka — znajdź drogę8Przekierowywanie
Standardowe wyjścieNadpisywanie plikuDopisywanie do plikuStandardowe wejścieStandardowe wyjście błędówPodsumowanie — tworzenie dziennika3Pliki
Utwórz plikOdczytaj plikSkopiuj plikPrzenieś i zmień nazwę plikuUsuń plikPodsumowanie — operacje na plikach6Symbole wieloznaczne i wzorce
Symbol wieloznaczny gwiazdkaSymbol wieloznaczny znak zapytaniaSymbole wieloznaczne w nawiasachŁączenie symboli wieloznacznychPowtórka — operacje selektywne9Potoki
Czym jest potokŁączenie dwóch poleceńŁączenie wielu poleceńPotok z grepPodsumowanie – potok danychPoćwicz samodzielnie: Edytor online Terminal