Porównanie zmiennych łańcuchowych Bash. Porównanie ciągów bez rozróżniania wielkości liter w Bash

Warunek if-else jest stosowany w Skrypty BASH'a Często. Sam warunek ma nieco dziwną postać [[ warunek ]]. Zwróć uwagę na wcięcia. Bez nich warunek nie zadziała. Podaję listę operatorów logicznych dla warunku [[ ? ]]:

Lista operatorów logicznych, które
używany w konstrukcji if-then-else-fi

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

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

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

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

Często trzeba sprawdzić zmienną pod kątem wartości. Jeśli w zmiennej nie ma nic, możesz zatrzymać skrypt.

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

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

#!/bin/bash if [ -z "$liczba" ]; 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 jeśli argumenty wiersz poleceń brak [ -z "$arg1" ] && arg1=DOMYŚLNE echo $arg1

Ten temat jest czwartym tematem w cyklu języka powłoki bash. Opowie 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ń to pojedyncze polecenie, potok lub sekwencja poleceń/potoków oddzielonych jednym z następujących operatorów: „;”, „&&”, „||”, zakończonych średnikiem.
; - operator sekwencyjnego wykonywania kilku poleceń. Każde kolejne polecenie jest uruchamiane dopiero po zakończeniu poprzedniego (udanego lub nie);
&& - operator wykonania polecenia dopiero po pomyślnym wykonaniu poprzedniego;
|| - instrukcja wykonania polecenia dopiero po błędnym wykonaniu poprzedniego.
Kod sukcesu to 0, a kod błędu nie jest równy zero (w zależności od rodzaju błędu). Nie mylić z popularnymi językami programowania, gdy 1 to prawda, a 0 to fałsz.
Teraz możemy przejść do bezpośredniego rozważenia instrukcji warunkowych.

operator wariantu przypadku

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

wartość przypadku w
szablon1) lista1;;
wzór2 | szablon3) lista2;;
esac

Logiczna kolejność wykonywania instrukcji case:
a) wyszukiwany jest pierwszy wzorzec pasujący do wartości;
b) jeśli zostanie znaleziony, wykonywana jest odpowiadająca mu lista poleceń, zakończona znakiem „;;”;
c) przekazanie kontroli operatorom następuje po wykonaniu sprawy.
Wzorzec i lista są oddzielone znakiem ")". Jednej liście poleceń może odpowiadać kilka warunków, w takim przypadku należy je oddzielić symbolem „|”.
W szablonach można używać znaków „*”, „?”, „”, które zostały opisane w drugim temacie cyklu. Z ich pomocą można zaimplementować instrukcję, która działa jako domyślna w instrukcji switch takich języków jak C, PHP.
Podam przykład użycia przypadku:
echo -n "[Przeglądarka uniwersalna] Określ nazwę pliku: "; odczyt pliku „$File” w formacie *.jpg|*.gif|*.png) eog $File ;; *.pdf) wykaz $Plik ;; *.txt) mniej $Plik ;; *.html) firefox $ Plik ;; /dev/*) echo "Cóż, to straszne pliki." ;; *) echo "Ok, ok - nie tak wszechstronnie." echo "Nie znam tego typu pliku. Nie wiem jak go wyświetlić." ;; esac
Inny przykład użycia konstrukcji case:
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

Instrukcja warunkowa if

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

jeśli lista1 to
lista2

fi

Nawiasy kwadratowe tutaj wskazują konstrukcje opcjonalne. Logiczna kolejność wykonywania instrukcji case:
a) wykonywana jest lista1;
b) jeśli zostanie wykonany bez błędów, zostanie wykonana lista2. W przeciwnym razie wykonywana jest lista3, a jeśli zakończy się bezbłędnie, wykonywana jest lista4. Jeśli list3 również zwróci kod błędu, wykonywana jest lista5;
c) sterowanie jest przekazywane operatorom następującym po konstrukcji if.
Podam przykład użycia if:
if grep -q Bash file then echo „Plik zawiera co najmniej jedno słowo Bash”. fi
Kiedy if i then znajdują się w tej samej linii, konstrukcje if i then muszą kończyć się średnikiem. Na przykład:
$jeśli[ $? –ne0]; następnie echo „Błąd”; fi
Teraz, wiedząc, że można umieścić if i then w tym samym wierszu, 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 parsowania kodu wyjścia, używane jest sprawdzanie warunku. Dwie formy takiego testu są równoważne: wbudowane polecenie test i [warunek]. Na przykład, aby sprawdzić, czy plik istnieje, napisałbyś:
test -e<файл>
Lub
[-mi<файл> ]
Jeśli używane są nawiasy kwadratowe, muszą być one oddzielone od siebie spacją, ponieważ „[” to nazwa polecenia, a „]” jest wymaganym ostatnim argumentem do jego zakończenia.
Jeśli warunek zostanie pomyślnie sprawdzony, zwracane jest 0, a jeśli jest fałszywy, kod błędu to 1.
Polecenie test może sprawdzić, czy łańcuch jest pusty. Niepusty łańcuch daje kod wyjścia 0. Pusty odpowiednio - 1. Na przykład:
$ test $UŻYTKOWNIK; echo $? 0
Konstrukcja „” jest bardziej wszechstronna niż „”. Ta rozszerzona wersja polecenia testowego. Wewnątrz tej konstrukcji nie jest wykonywana żadna dodatkowa interpretacja nazw plików ani dzielenie argumentów na osobne słowa, ale dozwolone jest podstawianie parametrów i poleceń. Na przykład:
file=/etc/passwd if [[ -e $file ]] następnie echo „Znaleziono plik z hasłami”. fi
Konstrukcja „” jest bardziej preferowana niż „”, ponieważ pomoże uniknąć niektórych błędów logicznych. Na przykład operatory „&&”, „||”, „<" и ">„inside” są całkowicie poprawne, podczas gdy inside „” generują komunikaty o błędach.
Konstrukcja "(())" pozwala na obliczenie wyrażeń arytmetycznych w niej zawartych. Jeśli wynik obliczeń wynosi zero, zwracany jest kod błędu. Niezerowy wynik obliczeń daje kod powrotu 0. Oznacza to dokładne przeciwieństwo instrukcji testowych i „” omówionych powyżej.
Instrukcja if pozwala na zagnieżdżone kontrole:
if echo "Następne *if* jest wewnątrz pierwszego *if*." if [[ $comparison = "integer" ]] to ((a< b)) else [[ $a < $b ]] fi then echo "$a меньше $b" fi

Wyrażenia warunkowe można łączyć za pomocą zwykłych operacji logicznych:
! <выражение>- odmowa;
<выражение1>-A<выражение2>- logiczne I;
<выражение1>– o<выражение2>- logiczne LUB.

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 i tak dalej.);
-p - plik jest potokiem;
-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) flaga dla pliku lub katalogu jest ustawiona;
-u - (suid) flaga dla pliku jest ustawiona;
-k - flaga lepkiego bitu jest ustawiona;
-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 są dowiązaniami twardymi do tego samego pliku.

Podstawowe wyrażenia warunkowe do porównywania ciągów znaków:
-z ciąg – długość łańcucha wynosi 0;
-n ciąg – długość łańcucha nie jest równa 0;
string1 == string2 – ciągi pasują do siebie (podobnie jak „=”);
line1 !== line2 – linie nie pasują do siebie (podobnie jak „!=”);
linia 1< строка2 – строка1 предшествует строке2 в лексикографическом порядке;
wiersz1 > wiersz2 - wiersz1 następuje po wierszu2 w porządku leksykograficznym.
Arytmetyczne wyrażenie warunkowe ma format:
argument1 operacja argument2 gdzie argumenty są liczbami całkowitymi i dozwolone są następujące operacje:
-eq - równy;
-ne - nie równe;
-lt - mniej;
-le - mniejszy lub równy;
-gt - więcej;
-ge - większy lub równy;
< - меньше (внутри двойных круглых скобок);
<= - меньше или равно (внутри двойных круглых скобок);
> - większy niż (wewnątrz podwójnych nawiasów);
>= - większe lub równe (wewnątrz podwójnych nawiasów).

Przepiszmy poprzedni przykład, używając instrukcji if:
echo "Błąd. Do kogo mam wysłać wiadomość?" echo "Do szefa: b" echo "Do kolegów: c" echo "Do nikogo: dowolny klucz" przeczytaj odpowiedź if [ "$answer" == "b" –o "$answer" == "B" ]; następnie szef „dziennika błędów” poczty< 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ł rozważania nad strukturami kontrolnymi powłoki bash. Mianowicie, zostaną rozważone operatory pętli. A teraz czekam na komentarze i krytykę :).

UPD: Dzięki użytkownikowi

Porównywanie ciągów w Bash nie sprawia żadnych problemów, dopóki nie pojawi się zadanie porównania dwóch ciągów bez uwzględniania wielkości liter. Podam kilka opcji rozwiązania problemu, z którego sam korzystam. Cechą tych rozwiązań jest wykorzystanie wyłącznie wbudowanych funkcji powłoki Bash.

Najpierw utworzę dwie zmienne str1 i str2 zawierające ciągi do porównania. Zostaną one 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ównywania łańcuchów bez uwzględniania wielkości liter, którą chcę zaproponować, wykorzystuje sterowanie opcjami powłoki za pomocą wbudowanego polecenia shopt.

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

Następna wersja porównywania ciągów bez uwzględniania wielkości liter jest oparta na zasadzie samodzielnego rzutowania ciągów na wspólny przypadek. Ten wariant kodu działa w Bash w wersji 4 i nowszych. Użycie go we wcześniejszej wersji Bash spowoduje błąd.

Tak więc, aby porównać łańcuchy zamienione na małe litery, możesz użyć następującego kodu.

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

Jeśli chcesz przekonwertować porównywane ciągi na wielkie litery, możesz użyć następującego kodu.

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

Alternatywnie, łańcuchy mogą być wymuszane w momencie deklaracji zmiennej. Odbywa się to za pomocą wbudowanego polecenia deklarowania powłoki.

Aby zadeklarować zmienną zawierającą tekst pisany małymi literami, użyj następującego kodu.

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

W wyniku wykonania tego kodu zmienna str będzie zawierała ciąg znaków pisany małymi literami, mimo że przypisywany ciąg został zapisany wielką literą. Możesz zmienić wielkość liter ciągu już ustawionego w zmiennej w następujący sposób.

#!/bin/bash str = "Camel Case String" zadeklaruj -l str str = $str echo $str

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

Teraz porównanie ciągów bez uwzględniania wielkości liter za pomocą polecenia deklarowania 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”

Każde z tych porównań ciągów bez uwzględniania wielkości liter może być używane w skryptach Bash. Dlatego jeśli używasz Bash w wersji 4 i nowszej, możesz wybrać ten, który najbardziej Ci się podoba. Jeśli wersja Bash jest mniejsza niż 4, należy użyć pierwszej opcji, określając opcję nocasematch za pomocą wbudowanej powłoki shopt.

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 potrzebne podczas odczytywania poleceń wprowadzanych przez użytkownika jako argumenty do wykonywalnego skryptu, a także podczas przetwarzania pliki tekstowe. A jedną z niezbędnych sztuczek w tym przypadku jest porównanie ciągów.

W tym artykule przyjrzymy się porównywaniu łańcuchów Bash, a także niektórym niuansom używania operacji porównywania i rozwiązywaniu typowych błędów.

Te operacje pozwalają określić, czy porównywane łańcuchy są takie same:

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

#!/bin/bash
użytkownik testowy=anton
if [ $USER = $testuser ]
Następnie
echo "Witamy użytkownika $test"
fi

Wynik skryptu:

Podczas sprawdzania równości z poleceniem test(synonim nawiasy kwadratowe) uwzględniane są wszystkie znaki interpunkcyjne i różnice w przypadku liter porównywanych ciągów.

Niektóre cechy dopasowywania ciągów do wzorców:

# zwraca wartość true, jeśli łańcuch zawarty w $x zaczyna się od „y”
[[ $x == y* ]]
# zwraca wartość true, jeśli ciąg znaków $x to dokładnie dwa znaki „y*”
[[ $x == "y*" ]]
# zwraca true, jeśli $x zawiera nazwę pliku zawartego w bieżącym katalogu, który zaczyna się od „y”
[ $x == y* ]
# zwraca wartość true, jeśli łańcuch $x jest równy dwóm znakom „y*”
[ "$x" == "y*" ]

Na przykład sprawdzenie łańcucha bash, aby zobaczyć, czy zaczyna się od y:

#!/bin/bash
x=jandeks
[[ $x == y* ]]
echo $?

Wynik wykonania kodu:

Skrypt zwraca 0 (zero), ponieważ poprosiliśmy o kod błędu ostatniej wykonanej instrukcji. Kod 0 oznacza, że ​​skrypt działał bez błędów. Rzeczywiście, zmienna $x zawiera ciąg Yandex, który zaczyna się od znaku „y”. W przeciwnym razie może zostać zapisane „1”. Jest to całkiem wygodny sposób debugowania skryptów.

Porównywanie ciągów alfabetycznie w Bash

Zadanie staje się bardziej skomplikowane, gdy próbuje się ustalić, czy ciąg jest poprzednikiem innego ciągu w rosnącej kolejności sortowania. Ludzie, którzy piszą skrypty w powłoce bash, często napotykają dwa problemy związane z operacjami większymi i mniejszymi niż porównania łańcuchów w Linuksie, które mają dość proste rozwiązania:

Po pierwsze, znaki "większy niż" i "mniejszy niż" muszą być zmienione przez dodanie ukośnika odwrotnego (\) przed nimi, ponieważ w przeciwnym razie będą one traktowane przez powłokę jako znaki przekierowania, a łańcuchy 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ównywania łańcuchów
val1 = baseball
val2=hokej
jeśli [ $wartość1 > $wartość2 ]
Następnie

w przeciwnym razie

fi

Co się stanie, jeśli porównasz ciągi bash:

Jak widać, sam symbol „większe niż” w swojej bezpośredniej formie dawał błędne wyniki, chociaż nie generował żadnych błędów. W tym przypadku znak ten spowodował przekierowanie strumienia wyjściowego, więc nie znaleziono błędów składniowych i w rezultacie plik o nazwie hokej:

Aby naprawić ten błąd, musisz zmienić znak „>”, aby warunek wyglądał następująco:

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

Wtedy wynik programu będzie poprawny:

Po drugie, łańcuchy uporządkowane za pomocą operatorów „większy niż” i „mniejszy niż” są ułożone inaczej niż ma to miejsce w przypadku polecenia sortować. W tym przypadku problemy są trudniejsze do rozpoznania i mogą w ogóle nie wystąpić, jeśli porównanie nie uwzględnia wielkości liter. W zespole sortować I test Porównanie jest inne:

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

Wynik kodu:

W zespole test wielkie litery będą najpierw poprzedzać małe litery. Ale jeśli te same dane są zapisywane do pliku, do którego następnie zastosuj polecenie sortować, to ciągi z małymi literami będą pierwsze:

Różnica między ich pracą polega na tym test do ustalenia porządku sortowania przyjmuje się za podstawę układ znaków według tablicy ASCII. W sortować wykorzystuje również porządek sortowania określony dla ustawień języka ustawień regionalnych.

Sprawdzanie ciągu pod kątem pustej wartości

Porównanie za pomocą operatorów -z I -N służy do określenia, czy zmienna zawiera treść. W ten sposób możesz znaleźć puste linie w bashu. Przykład:

#!/bin/bash
val1=testowanie
wartość2=""
# sprawdza, czy łańcuch jest pusty
jeśli [ -n $wartość1 ]
Następnie
echo "String "$val1" nie jest pusty"
w przeciwnym razie
echo "String "$val1" jest pusty"
fi
# sprawdza, czy łańcuch jest pusty
jeśli [ -z $wartość2 ]
Następnie
echo "String "$val2" jest pusty"
w przeciwnym razie
echo "String "$val2" nie jest pusty"
fi
jeśli [ -z $wartość3 ]
Następnie
echo "String "$val3" jest pusty"
w przeciwnym razie
echo "String "$val3" nie jest pusty"
fi

Wynik kodu:

Ten przykład tworzy dwie zmienne łańcuchowe - wartość1 I wartość2. Operacja -N określa, czy zmienna ma wartość1 niezerową długość i -z czeki 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ę przy sprawdzaniu różnych scenariuszy. A jeśli nie jesteś pewien jaka wartość jest zawarta w zmiennej i czy w ogóle jest ustawiona, powinieneś to sprawdzić za pomocą operatora -N Lub -z a dopiero potem używać go zgodnie z jego przeznaczeniem.

Warto zwrócić uwagę na funkcję -N. Jeśli do testu zostanie przekazana niezadeklarowana lub pusta zmienna, zwróci ona wartość true, a nie false. W takich przypadkach należy ująć sprawdzany ciąg znaków (zmienną) w podwójne cudzysłowy, tak aby wyglądał on tak:

...
if [ -n "$wartość1" ]
...

wnioski

Istnieją pewne niuanse przedstawionych operacji porównywania ciągów Bash, które warto zrozumieć, aby zapobiec błędom skryptowym. Ale w praktyce takich sytuacji jest wiele, więc zapamiętywanie wszystkiego (a tym bardziej opisywanie) nie zadziała.

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

Operatory do porównywania liczb bash

operatorco on robiprzykład
-równporównaj cyfry w bash dla równości, zwraca 0, jeśli jest równyjeśli [ $a -eq $b ] to
-geporównywanie liczb w bash, jeśli są większe lub równe. Wynik zwraca 0, jeśli jest większy lub równyjeśli [ $a -ge $b ] to
-gtporównuje liczby w bash, jeśli są większe niż.jeśli [ $a -gt $b ] to
-leporównuje liczby w bash, jeśli są mniejsze lub równe.jeśli [ $a -le $b ] to
-ltporównuje liczby w bash, jeśli mniej.jeśli [ $a -lt $b ] to
-nieporównuje liczby w bash, jeśli nie są równe lub nie.jeśli [ $a -ne $b ] to

Szczegółowe przykłady operatorów porównywania liczb w Bash:

1. operator-równ

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

# cat test.sh #!/bin/bash echo "podaj wartość zmiennej" przeczytaj echo "podaj wartość zmiennej" przeczytaj b if [ $a -eq $b ] then echo "Zwróć wartość:: $?" echo "a i b są równe" else echo "Zwrócona wartość::$?" echo "a i b nie są równe" fi #

Wykonanie:

# sh test.sh wprowadź wartość zmiennej 2 wprowadź wartość zmiennej 3 Wartość zwracana: 1 aib nie są równe # sh test.sh wprowadź wartość zmiennej 2 wprowadź wartość zmiennej 2 Wartość zwracana: 0 aib są równe #

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

2. operatora-ge

Ten operator porównuje liczby i sprawdza wartości większe lub równe. Jeśli wartość jest większa lub równa, to zwracana wartość wynosi 0.

# cat test1.sh #!/bin/bash #diff program dla -ge echo "wprowadź wartość dla zmiennej" przeczytaj echo "podaj wartość dla zmiennej b" przeczytaj b if [ $a -ge $b ] then echo "zwróć wartość : :$?" echo "a jest większe lub równe b" w przeciwnym razie echo "wartość zwrócona::$?" 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 #differ for -gt b=100 echo "Wprowadź wartość większą niż 100" przeczytaj a if [ $a -gt $b ] then echo "Bardzo dobrze" else echo "Niezbyt dobre "fi

4. operatora-le

Ten operator porównania liczb przetestuje wartości mniejsze lub równe. Jeśli jest mniejsza lub równa, zwracana wartość wynosi 0.

#diff program dla -le b=5 echo "podaj wartość mniejszą lub równą 5" przeczytaj a if [ $a -le $b ] then echo "correct" else echo "false" fi #

5. operatora-lt

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

mob_info