Okna.  Wirusy.  Laptopy.  Internet.  Biuro.  Narzędzia.  Kierowcy

Ten temat jest czwartym tematem z serii „Język powłoki Bash”. Będzie mówił o takich strukturach kontrolnych języka, jak instrukcje warunkowe. Ale zanim przejdziemy do ich opisu, należy zastanowić się nad pewnymi niuansami, które sprawią, że rozważenie poniższego materiału będzie bardziej zrozumiałe.
Najpierw przyjrzyjmy się, czym jest lista poleceń. Lista poleceń jest pojedynczy zespół, potok lub sekwencja poleceń/potoków oddzielonych jednym z następujących operatorów: „;”, „&&”, „||”, zakończonym średnikiem.
; - operator sekwencyjnego wykonywania kilku poleceń. Każde kolejne polecenie zaczyna być wykonywane dopiero po zakończeniu poprzedniego (nie ma znaczenia, czy zakończyło się sukcesem, czy nie);
&& - operator wykonujący polecenie dopiero po pomyślnym wykonaniu poprzedniego;
|| - operator wykonania polecenia dopiero po błędnym wykonaniu poprzedniego.
Kod pomyślne zakończenie wynosi 0, a błąd jeden nie wynosi zero (w zależności od rodzaju błędu). Nie należy tego mylić z konwencjonalnymi językami programowania, gdzie 1 jest analogiczne do prawdy, a 0 jest analogiczne do fałszu.
Teraz możemy zacząć bezpośrednio rozważać instrukcje warunkowe.

operator sprawy

Ogólna składnia instrukcji case jest następująca:

wartość przypadku w
szablon1) lista1;;
szablon2 | szablon3) lista2;;
esac

Logiczna sekwencja wykonania instrukcji case:
a) przeszukiwany jest pierwszy wzorzec pasujący do wartości;
b) jeśli zostanie znaleziony, wykonywana jest odpowiednia lista poleceń, kończąca się na „;;”;
c) kontrola zostaje przeniesiona na sprawozdania po zbudowaniu sprawy.
Szablon i lista są oddzielone znakiem „)”. Jedna lista poleceń może odpowiadać kilku warunkom, wówczas należy je oddzielić symbolem „|”.
W szablonach można używać symboli „*”, „?”, „”, które zostały omówione w drugim temacie z tej serii. Za ich pomocą można zaimplementować instrukcję, która domyślnie działa w instrukcji switch w językach takich jak C, PHP.
Oto przykład użycia przypadku:
echo -n "[Przeglądarka uniwersalna] Określ nazwę pliku: "; czytaj wielkość pliku "$File" w *.jpg|*.gif|*.png) eog $File ;; *.pdf) dowód $Plik ;; *.txt) mniej $Plik ;; *.html) Firefox $Plik ;; /dev/*) echo „No cóż, to są przerażające pliki.” ;; *) echo "No dobra, dobra - nie takie uniwersalne." echo "Nie znam tego typu plików. Nie wiem jak je wyświetlić." ;; esac
Inny przykład użycia konstrukcji przypadku:
echo "Błąd. Do kogo mam wysłać wiadomość?" echo "Do szefa: b" echo "Do kolegów: c" echo "Do nikogo: dowolny klucz" czytaj odpowiedź case $odpowiedź w b|B) mail –s "dziennik błędów" szef< error.log;; c|C) mail –s "Help! error log" –c denis nick < error.log;; *) echo "error"; exit;; esac

Operator warunkowy Jeśli

Ogólna składnia instrukcji if jest następująca:

jeśli lista 1 to
lista2

fi

Nawiasy kwadratowe wskazują tutaj konstrukcje opcjonalne. Logiczna sekwencja wykonania instrukcji case:
a) wykonywana jest lista1;
b) jeśli zostanie wykonane bez błędów, zostanie wykonana lista2. W przeciwnym razie wykonywana jest lista3, a jeśli zakończy się bez błędów, wykonywana jest lista4. Jeśli lista3 również zwróci kod błędu, wykonywana jest lista5;
c) kontrola jest przekazywana operatorom po konstrukcji if.
Oto przykład użycia if:
jeśli grep -q Plik Bash, to echo „Plik zawiera co najmniej jedno słowo Bash”. fi
Kiedy if i then pojawiają się w tym samym wierszu, konstrukcje if i then muszą kończyć się średnikiem. Na przykład:
$jeśli [$? –ne 0]; następnie powtórz „Błąd”; fi
Teraz, wiedząc, że możliwe jest umieszczenie if i then w tej samej linii, przepiszmy powyższy przykład:
if grep -q plik Bash; następnie echo „Plik zawiera słowo Bash”. fi

Instrukcja testowa i wyrażenia warunkowe

W powyższym przykładzie zamiast analizowania kodu wyjścia zastosowano sprawdzenie warunku. Dwie formy takiego testowania są równoważne: wbudowane polecenie testowe i [warunek]. Na przykład, aby sprawdzić istnienie pliku, musisz napisać:
test – tj<файл>
Lub
[-tj<файл> ]
W przypadku użycia nawiasów kwadratowych należy je oddzielić spacją, ponieważ „[” to nazwa polecenia, a „]” to ostatni argument wymagany do jego zakończenia.
Jeśli warunek zostanie pomyślnie sprawdzony, zwracane jest 0, a jeśli fałszywe, zwracany jest kod błędu 1.
Polecenie test może sprawdzić, czy ciąg znaków jest pusty. Niepusty ciąg skutkuje kodem wyjścia 0. Pusty odpowiednio – 1. Na przykład:
$test $UŻYTKOWNIK; powtórzyć $? 0
Projekt „” jest bardziej uniwersalny w porównaniu do „”. To jest rozszerzona wersja polecenia test. W ramach tej konstrukcji nie jest wykonywana żadna dodatkowa interpretacja nazw plików i argumenty nie są dzielone na poszczególne słowa, ale dozwolone jest podstawianie parametrów i poleceń. Na przykład:
plik=/etc/passwd jeśli [[ -e $plik ]], następnie powtórz echo „Znaleziono plik z hasłem”. fi
Konstrukcja „” jest lepsza niż „”, ponieważ pomaga uniknąć pewnych błędów logicznych. Na przykład operatory „&&”, „||”, „<" и ">„wewnątrz” są całkowicie akceptowalne, podczas gdy „wewnątrz” generują komunikaty o błędach.
Konstrukcja „(())” pozwala na ocenę zawartych w niej wyrażeń arytmetycznych. Jeżeli wynikiem obliczeń jest zero, zwracany jest kod błędu. Niezerowy wynik obliczenia daje kod powrotu równy 0. Jest to dokładne przeciwieństwo instrukcji test i „” omówionych powyżej.
Instrukcja if pozwala na zagnieżdżone kontrole:
if echo "Następny *if* znajduje się wewnątrz pierwszego *if*."< b)) else [[ $a < $b ]] fi then echo "$a меньше $b" fi

if [[ $porównanie = "liczba całkowita" ]] to ((a Wyrażenia warunkowe można łączyć za pomocą zwykłego:
! <выражение>operacje logiczne
<выражение1>- odmowa;<выражение2>-A
<выражение1>– logiczne ORAZ;<выражение2>–o

– logiczne OR.
Podstawowe wyrażenia warunkowe dla plików:
-e – plik istnieje;
-f - zwykły plik (nie katalog ani plik urządzenia);
-s - niezerowy rozmiar pliku;
-d - plik jest katalogiem;
-b - plik jest urządzeniem blokowym (dyskietka, cdrom itp.); -c - plik jest urządzeniem znakowym (klawiatura, modem, karta dźwiękowa
itp.);
-p – plik jest kanałem;
-h – plik jest dowiązaniem symbolicznym;
-L - plik jest dowiązaniem symbolicznym;
-S - plik jest gniazdem;
-t - plik jest powiązany z urządzeniem końcowym;
-r - plik jest czytelny (dla użytkownika, który uruchomił skrypt);
-w - plik jest zapisywalny (dla użytkownika, który uruchomił skrypt);
-x - plik jest dostępny do wykonania (dla użytkownika, który uruchomił skrypt);
-g - (sgid) ustawiona jest flaga pliku lub katalogu;
-u - ustawiona jest flaga (suid) dla pliku;
-k - ustawiona jest flaga bitu trwałego;
-O - ​​jesteś właścicielem pliku;
-G - należysz do tej samej grupy co plik;
-N - plik został zmodyfikowany od ostatniego odczytu;
plik1 -nt plik2 – plik1 jest nowszy niż plik2;
plik1 -ot plik2 – plik1 jest starszy niż plik2;

plik1 -ef plik2 – plik1 i plik2 to „twarde” łącza do tego samego pliku.
Podstawowe wyrażenia warunkowe do porównywania ciągów:
-z ciąg – długość łańcucha wynosi 0;
-n ciąg – długość łańcucha nie jest równa 0;
linia1 == linia2 – linie pasują (podobnie jak „=”);
linia1 !== linia2 – linie nie pasują (analogicznie do „!=”);< строка2 – строка1 предшествует строке2 в лексикографическом порядке;
linia 1
linia1 > linia2 – linia1 następuje po linii2 w porządku leksykograficznym.
operacja argument1 argument2, gdzie argumenty są liczbami całkowitymi i dozwolone są następujące operacje:
-eq – równy;
-ne – nierówny;
-lt – mniej;
-le – mniejszy lub równy;
-gt – więcej;
-ge – większy lub równy;
< - меньше (внутри двойных круглых скобок);
<= - меньше или равно (внутри двойных круглых скобок);
> - większy niż (w podwójnych nawiasach);
>= - większy lub równy (w podwójnych nawiasach).

Przepiszmy poprzedni przykład, używając instrukcji if:
echo "Błąd. Do kogo mam wysłać wiadomość?" echo "Szef: b" echo "Koledzy: c" echo "Nikt: dowolny klawisz" czytaj odpowiedź if [ "$odpowiedź" == "b" –o "$odpowiedź" == "B" ]; następnie wyślij wiadomość do szefa „dziennika błędów”.< error.log; elif [ "$answer" == "c" –o "$answer" == "C" ]; then mail –s "Help! error log" –c denis nick < error.log; else echo "error"; exit; fi

W następnym temacie będę kontynuował przyglądanie się strukturom kontrolnym interpretera poleceń bash. Mianowicie rozważone zostaną operatory pętli. A teraz czekam na komentarze i krytykę :).

UPD: Dziękuję użytkownikowi

Pisząc skrypty w Bash, nie tylko doświadczeni programiści, ale także nowicjusze w powłoce Bash mają do czynienia z pracą z ciągami znaków. Jest to najczęściej konieczne podczas odczytywania poleceń wprowadzanych przez użytkownika jako argumenty skryptu wykonywalnego, a także podczas przetwarzania pliki tekstowe. Jedną z niezbędnych technik w tym przypadku jest porównywanie ciągów.

W tym artykule przyjrzymy się porównaniu Linie basowe, a także pewne niuanse dotyczące korzystania z operacji porównywania i rozwiązywania typowych błędów.

Operacje te pozwalają określić, czy porównywane ciągi są takie same:

  • = - równe, np jeśli [ "$x" = "$y" ]
  • == - na przykład synonim operatora „=”. jeśli [ "$x" == "$y" ]
  • != - nie równe, np jeśli [ "$x" != "$y" ]

#!/bin/bash
użytkownik testowy=anton
jeśli [$USER = $użytkownik testowy]
Następnie
echo "Witamy $testującego użytkownika"
fi

Wynik skryptu:

Podczas testowania równości za pomocą polecenia test(synonim nawiasów kwadratowych) uwzględniane są wszystkie znaki interpunkcyjne oraz różnice w przypadku liter porównywanych ciągów.

Niektóre funkcje porównywania ciągów ze wzorcami:

# zwraca wartość true, jeśli ciąg zawarty w $x zaczyna się od znaku „y”
[[ $x == y* ]]
# zwraca wartość true, jeśli ciąg z $x jest równy dokładnie dwóm znakom „y*”
[[ $x == "y*" ]]
# zwraca wartość true, jeśli $x zawiera nazwę pliku zawartego w bieżącym katalogu rozpoczynającą się od „y”
[ $x == y* ]
# zwraca wartość true, jeśli ciąg $x jest równy dwóm znakom „y*”.
[ "$x" == "y*" ]

Na przykład sprawdzenie ciągu bash, czy zaczyna się od znaku y:

#!/bin/bash
x=yandex
[[ $x == y* ]]
powtórzyć $?

Wynik wykonania kodu:

Skrypt generuje wynik 0 (zero), ponieważ zażądaliśmy wyświetlenia kodu błędu ostatniej wykonanej instrukcji. Natomiast kod 0 oznacza, że ​​skrypt został wykonany bez błędów. I rzeczywiście - zmienna $x zawiera ciąg Yandex, który zaczyna się od znaku „y”. W przeciwnym razie można zapisać „1”. To ładne wygodny sposób debugowanie skryptów.

Porównywanie ciągów alfabetycznie w Bash

Zadanie staje się trudniejsze, gdy próbujemy ustalić, czy wiersz jest poprzednikiem innego wiersza w kolejności rosnącej. Osoby piszące skrypty basha często napotykają dwa problemy dotyczące operatorów „większy niż” i „mniejszy niż” w porównaniu z ciągami znaków w systemie Linux, które mają dość proste rozwiązania:

Po pierwsze, znaki większości i mniejszości należy poprzedzić ukośnikiem odwrotnym (\), ponieważ w przeciwnym razie powłoka potraktuje je jako znaki przekierowania, a ciągi znaków jako nazwy plików. Jest to jeden z tych przypadków, w których wyśledzenie błędu jest dość trudne.

#!/bin/bash
# nieprawidłowe użycie operatorów porównania ciągów
wartość1=baseball
wartość2=hokej
jeśli [ $wartość1 > $wartość2 ]
Następnie

w przeciwnym razie

fi

Co otrzymasz, jeśli porównasz ciągi bash:

Jak widać, sam symbol „większy niż” w swojej bezpośredniej formie prowadził do błędnych wyników, chociaż nie wygenerowano żadnych błędów. W w tym przypadku ten znak spowodował przekierowanie strumienia wyjściowego, więc nie błędy składniowe nie został wykryty i w rezultacie powstał plik o nazwie hokej:

Aby rozwiązać ten błąd, musisz uciec przed znakiem „>”, tak aby warunek wyglądał następująco:

...
jeśli [ $wartość1 \> $wartość2 ]
...

Wtedy wynik programu będzie poprawny:

Po drugie, ciągi uporządkowane za pomocą operatorów większy niż i mniejszy niż są ułożone inaczej niż za pomocą polecenia sortować. Tutaj problemy są trudniejsze do rozpoznania i możesz ich w ogóle nie spotkać, jeśli w porównaniu nie uwzględni się wielkości liter. W zespole sortować I test porównanie odbywa się na różne sposoby:

#!/bin/bash
wartość1=Testowanie
wartość2=testowanie
jeśli [ $wartość1 \> $wartość2 ]
Następnie
echo "$wart1 jest większy niż $wart2"
w przeciwnym razie
echo "$wart1 jest mniejsza niż $wartość2"
fi

Wynik kodu:

W zespole test linie z wielkimi literami będą poprzedzone najpierw wierszami z małymi literami. Ale jeśli zapiszesz te same dane do pliku, do którego następnie zastosujesz polecenie sortować, wówczas jako pierwsze pojawią się linie pisane małymi literami:

Różnica między ich pracą polega na tym, że w test Aby określić porządek sortowania, przyjmuje się za podstawę rozmieszczenie znaków w tabeli ASCII. W sortować Używana jest kolejność sortowania określona dla ustawień regionalnych.

Sprawdzanie łańcucha pod kątem pustej wartości

Porównanie przy użyciu operatorów -z I -N używany do określenia, czy zmienna zawiera treść. W ten sposób możesz znaleźć puste linie bash. Przykład:

#!/bin/bash
wartość1=testowanie
wartość2=""
# sprawdza, czy ciąg znaków jest pusty
jeśli [ -n $wartość1 ]
Następnie
echo „Ciąg „$val1” nie jest pusty”
w przeciwnym razie
echo "Ciąg "$val1" jest pusty"
fi
# sprawdza, czy ciąg znaków jest pusty
jeśli [-z $wartość2]
Następnie
echo "Ciąg "$val2" jest pusty"
w przeciwnym razie
echo „Ciąg „$val2” nie jest pusty”
fi
jeśli [ -z $wart3 ]
Następnie
echo "Ciąg "$val3" jest pusty"
w przeciwnym razie
echo „Ciąg „$val3” nie jest pusty”
fi

Wynik kodu:

Ten przykład tworzy dwie zmienne łańcuchowe - wartość1 I wartość2. Działanie -N określa, czy zmienna ma wartość1 długość niezerowa i -z sprawdza wartość2 I wartość3 do zera. Warto zauważyć, że ta ostatnia nie została zdefiniowana aż do momentu porównania, ale interpretator uważa, że ​​jej długość jest nadal równa zeru. Ten niuans należy wziąć pod uwagę, kiedy różne kontrole scenariusze. A jeśli nie mamy pewności, jaka wartość zawiera się w zmiennej i czy w ogóle jest ustawiona, warto to sprawdzić za pomocą operatora -N Lub -z i dopiero wtedy używać go zgodnie z jego przeznaczeniem.

Warto zwrócić uwagę na funkcję -N. Jeśli do testowania zostanie przekazana niezadeklarowana lub pusta zmienna, zwróci wartość true, a nie false. W takich przypadkach należy załączyć wprowadzany ciąg znaków (zmienną). podwójne cudzysłowy więc wygląda to tak:

...
jeśli [ -n "$wart1" ]
...

Wnioski

Istnieją pewne niuanse w przedstawionych operacjach porównywania ciągów Bash, które warto zrozumieć, aby zapobiec błędom skryptu. Ale w praktyce takich sytuacji jest wiele, więc nie da się wszystkiego zapamiętać (a co dopiero opisać).

Porównywanie ciągów w Bash nie sprawia żadnych problemów, dopóki nie staniesz przed zadaniem porównania dwóch ciągów w sposób nieuwzględniający wielkości liter. Podam kilka opcji rozwiązania problemu, z którego sam korzystam. Osobliwością tych rozwiązań jest to, że wykorzystują one wyłącznie wbudowane możliwości powłoki Bash.

Na początek utworzę dwie zmienne, str1 i str2, zawierające ciągi do porównania. To właśnie one zostaną użyte w poniższych przykładach kodu.

#!/bin/bash str1 = „Ciąg do porównania” str2 = „ciąg do porównania”

Pierwsza wersja porównania ciągów znaków bez rozróżniania wielkości liter, którą chcę zaproponować, wykorzystuje zarządzanie opcjami powłoki za pomocą wbudowanego polecenia shopt.

shopt -s nocasematch [[ $str1 == $str2 ]] && echo "dopasuj" ||

Następna wersja porównywania ciągów bez uwzględniania wielkości liter opiera się na zasadzie niezależnej konwersji ciągów na typową wielkość liter. Ten wariant kodu działa w Bash 4 i nowszych wersjach. Użyj go, aby uzyskać więcej wczesna wersja Bash zgłosi błąd.

Aby porównać ciągi przekonwertowane na małe litery, możesz użyć następna opcja kod.

[[ " $( str1 , ) " == " $( str2 , ) " ]] && echo "dopasuj" ||

echo „nie pasuje” Jeśli chcesz rzucić porównywane ciągi na wielkie litery

, możesz użyć poniższego kodu.

[[ " $( str1 ^^ ) " == " $( str2 ^^ ) " ]] && echo "dopasuj" || echo „nie pasuje” Jak

opcja alternatywna

, konwersję ciągów znaków do pojedynczego rejestru można przeprowadzić już w momencie deklarowania zmiennych. Aby to zrobić, użyj wbudowanego polecenia powłokideklaruj.

Aby zadeklarować zmienną zawierającą tekst małymi literami, użyj poniższego kodu.

#!/bin/bash deklaracja -l str = "Ciąg znaków wielbłąda"

W wyniku wykonania tego kodu zmienna str będzie zawierała ciąg znaków wykonany małymi literami, mimo że przypisany ciąg znaków został zapisany wielką literą. Wielkość liter już określonego w zmiennej można zmienić w następujący sposób.

#!/bin/bash str = "Ciąg wielbłąda" zadeklaruj -l str str = $str echo $str

Aby zamienić ciąg znaków na wielkie litery, w powyższym przykładzie kodu należy zmienić wywołanie poleceniadeklaruj, używając przełącznika -u zamiast przełącznika -l.

Teraz porównanie ciągów bez uwzględniania wielkości liter za pomocą poleceniadeklaruj można wykonać w następujący sposób.

zadeklaruj -l str1_l = $str1 zadeklaruj -l str2_l = $str2 [[ $str1_l == $str2_l ]] && echo "dopasuj" || echo „nie pasuje” Podczas pisania skryptów Bash można użyć dowolnej z omówionych opcji porównywania ciągów nieuwzględniających wielkości liter. Dlatego jeśli używasz Bash w wersji 4 lub wyższej, możesz wybrać tę, która najbardziej Ci się podoba. Jeśli wersja Bash jest niższa niż 4, należy skorzystać z pierwszej opcji, określając opcję nocasematch za pomocą wbudowanego polecenia powłoki shopt. warunek „jeżeli-inaczej”. używane w skryptach BASH

bardzo często. Sam stan ma nieco dziwny wygląd [[stan ]]. Zwróć uwagę na wcięcia. Bez nich warunek nie będzie działać. Oto lista
operatory logiczne

#!/bin/bash if [[ $1 > 2 ]], to # if [[ ? ]] echo $1" jest większe niż 2" else # jeśli nie pasuje echo $1" jest mniejsze niż 2 lub 2" fi

Niektórzy z Was mogą uznać operator równości -eq za dziwny. Spróbuj użyć znanych operatorów >

Załóżmy, że masz skrypt i musisz zweryfikować użytkownika. Jeśli użytkownik nie jest rootem, skrypt zostanie zatrzymany.

#!/bin/bash if [ "$(whoami)" != "root" ]; następnie echo „Nie masz uprawnień do uruchomienia $0.”

wyjście 1; fi

Często trzeba sprawdzić zmienną, aby sprawdzić, czy ma ona wartość. Jeśli w zmiennej nie ma nic, możesz zatrzymać skrypt.

#!/bin/bash if [ -n "$num" ]; następnie „zmienna ma coś i możesz rozpocząć inny proces” w przeciwnym razie echo „pusta zmienna, zatrzymaj skrypt” exit 0; fi

Jeśli zmienna jest pusta, można ją wypełnić.

#!/bin/bash if [ -z "$num" ]; następnie echo "zmienna jest pusta" num=1 else echo "num="$num fi

Pustej zmiennej można przypisać wartość domyślną. Ten wpis jest krótszy niż w poprzednim przykładzie. #!/bin/bash # Wpisz DOMYŚLNE argumenty wiersz poleceń

brak [ -z "$arg1" ] && arg1=DOMYŚLNE echo $arg1

W skryptach powłoki Bash możemy wykonywać porównania liczb. Aby wykonać operację porównywania liczb w Bash, musisz użyć stanu „test” w pętli if lub. W tym poście dowiesz się, jak porównywać liczby w bashu.

Operatory porównywania liczb w języku Bashoperatorco to robi
przykład-równporównaj liczby w bashu pod kątem równości, zwraca 0, jeśli jest równe
jeśli [ $a -eq $b ] to-geporównywanie liczb w bashu, jeśli są większe lub równe. Wynik zwraca 0, jeśli jest większy lub równy
jeśli [ $a -ge $b ] to-gtporównuje liczby w bashu, jeśli są większe.
jeśli [ $a -gt $b ] to-lePorównuje liczby w bashu, jeśli są mniejsze lub równe.
jeśli [ $a -le $b ] to-ltporównuje liczby w bashu, jeśli są mniejsze.
jeśli [ $a -lt $b ] to-nieporównuje liczby w bashu, jeśli nie są równe lub nie.

jeśli [ $a -ne $b ] to

Przykłady szczegółowych operatorów porównania liczb w Bash:przykład

1. operator

Ten operator porównuje liczby, sprawdza, czy wartość jest równa, czy nie. Jeśli jest równy, zwracane jest 0.

# cat test.sh #!/bin/bash echo "wprowadź wartość zmiennej" read a echo "wprowadź wartość zmiennej" read b if [ $a -eq $b ] następnie echo "Zwróć wartość:: $ ?” echo "aib są równe" else echo "Zwrócona wartość:: $?" echo „aib nie są równe” fi #

# sh test.sh wprowadź wartość zmiennej 2 wprowadź wartość zmiennej 3 Wartość zwrócona:: 1 a i b nie są równe # sh test.sh wprowadź wartość zmiennej 2 wprowadź wartość zmiennej 2 Wartość zwrócona:: 0 a i b są równe #

W powyższym przykładzie po raz pierwszy wzięliśmy liczby 2 i 3 i system zwrócił wartość 1, natomiast gdy przyjęliśmy te same wartości dla a i b, zmienna zwraca wartość zero.

2. operatorjeśli [ $a -eq $b ] to

Operator ten porównuje liczby i sprawdza, czy wartości są większe lub równe. Jeśli wartość jest większa lub równa, zwracana wartość wynosi 0.

# cat test1.sh #!/bin/bash #program porównawczy dla -ge echo "wprowadź wartość zmiennej" read a echo "wprowadź wartość zmiennej b" read b if [ $a -ge $b ] to echo "Zwracana wartość: : $?" echo "a jest większe lub równe b" else echo "zwracana wartość:: $?" echo „a nie jest większe lub równe b” fi #

3. operator -gt

Ten operator porównania liczb sprawdzi, czy liczba jest większa. Jeśli wartość jest większa, zwraca 0.

# cat test2.sh #!/bin/bash #program porównawczy dla -gt b=100 echo "wprowadź wartość większą niż 100" read a if [ $a -gt $b ] następnie echo "Bardzo dobrze" else echo "Nie bardzo dobrze” fi

4. operatorjeśli [ $a -gt $b ] to

Ten operator porównania liczb przetestuje wartości pod kątem mniejszym lub równym. Jeśli jest mniejsza lub równa, zwracana wartość wynosi 0.

#porównaj program dla -le b=5 echo "wprowadź wartość mniejszą lub równą 5" przeczytaj a if [ $a -le $b ] następnie echo "wszystko poprawne" else echo "niepoprawne" fi #

5. operatorjeśli [ $a -le $b ] to

Ten operator porównania liczb przetestuje wartości mniejsze niż. Jeśli liczba jest mniejsza, zwracana wartość wynosi 0.



Jeśli zauważysz błąd, zaznacz fragment tekstu i naciśnij Ctrl+Enter
UDZIAŁ: