Najlepszy samouczek Shell podstawowe operatory W 2024 r. W tym samouczku możesz dowiedzieć się operatory arytmetyczne,operatory relacyjne,operatory logiczne,Operatory logiczne,Operatorzy strunowe,File operatorów polecenia test,
Shell i inne języki programowania, obsługuje różne podmioty, w tym:
Natywna bash nie obsługuje prostych operacji matematycznych, ale można osiągnąć za pomocą innych poleceń, takich jak awk i wyraż, wyraż najczęściej używane.
wyrażenie jest narzędzie obliczeniowe wyraz, użyj go, aby zakończyć operację wyrażeń.
Na przykład, aby dodać dwie liczby (zauważ użycie `anty-cudzysłowu zamiast pojedynczych cudzysłowów '):
#!/bin/bash val=`expr 2 + 2` echo "两数之和为 : $val"
Wykonaj skrypt, wyjście jest w następujący sposób:
两数之和为 : 4
Dwie rzeczy do uwaga:
Poniższa tabela zawiera listę typowych operatorów arytmetycznych, przy założeniu zmiennej 10, zmienna b jest 20:
operatorzy | wyjaśnienie | Przykłady |
---|---|---|
+ | dodawanie | `Expr $ a + $ B` wynik jest 30. |
- | odejmowanie | `Expr $ a - $ B` wynik jest -10. |
* | mnożenie | `Expr $ A \ * Wyniki $ B` na 200. |
/ | podział | `Expr $ b / $ result A` 2. |
% | reszta | `Expr $ b $% Wynik A` 0. |
= | przyporządkowanie | a = $ b zmiennej b przypisze wartość. |
== | Równe. Służy do porównywania dwóch liczb, sam zwrot prawdziwe. | [$ A == $ b] zwraca false. |
! = | Nie równe. Używane porównać dwie liczby nie są takie same zwraca true. | [$ A! = $ B] zwraca true. |
Uwaga: Wyrażenie warunkowe powinny być umieszczone w nawiasach kwadratowych, a to miejsce, na przykład:[$ a == $ b] jest źle i musi być zapisane jako[$ a == $ b].
Operatory arytmetyczne przykłady przedstawiają się następująco:
#!/bin/bash # author:本教程 # url:www.w3write.com a=10 b=20 val=`expr $a + $b` echo "a + b : $val" val=`expr $a - $b` echo "a - b : $val" val=`expr $a \* $b` echo "a * b : $val" val=`expr $b / $a` echo "b / a : $val" val=`expr $b % $a` echo "b % a : $val" if [ $a == $b ] then echo "a 等于 b" fi if [ $a != $b ] then echo "a 不等于 b" fi
Wykonaj skrypt, wyjście jest w następujący sposób:
a + b : 30 a - b : -10 a * b : 200 b / a : 2 b % a : 0 a 不等于 b
Uwaga:
- znak mnożenia (*) muszą zostać dodane przed backslash (\) w celu osiągnięcia mnożenia;
- if pl. then pl. Fi jest sprawozdanie warunkowe, dalsze działania zostaną pokryte.
- W powłoce MAC składni wyrażenie jest: $ ((wyrażenie)), gdzie wyrażenie "*" muszą uciec symbol "\".
operatory relacyjne obsługują tylko cyfrowy nie obsługuje łańcuch, chyba że wartość ciągu jest liczbą.
Poniższa tabela zawiera listę często używanych operatorów relacyjnych, przy założeniu zmiennej 10, zmienna b jest 20:
operatorzy | wyjaśnienie | Przykłady |
---|---|---|
-eq | Wykrywanie, czy dwie liczby są równe, równe Zwraca true. | [$ A eq $ b] zwraca false. |
-ne | Wykrywanie, czy dwie liczby są równe, a nie równe zwraca true. | [$ A -ne $ b] zwraca true. |
-gt | Po lewej stronie jest większa niż liczba wykrytych w prawo, a jeśli tak, to zwraca prawdziwe. | [$ A -gt $ b] zwraca false. |
-To | Detekcja ta liczba jest mniejsza niż z prawej strony na lewo, a jeśli tak, to zwraca prawdziwe. | [$ A -lt $ b] zwraca true. |
-ge | Wykrywanie, czy liczba jest równa prawej stronie lewej stronie duże, a jeśli tak, to zwraca prawdziwe. | [$ A -ge $ b] zwraca false. |
-le | Czy liczba detekcji jest mniejsza niż lub równa prawej do lewej strony, jeśli tak jest, to zwraca prawdziwe. | [$ A -le $ b] zwraca true. |
operatory relacyjne przykłady przedstawiają się następująco:
#!/bin/bash # author:本教程 # url:www.w3write.com a=10 b=20 if [ $a -eq $b ] then echo "$a -eq $b : a 等于 b" else echo "$a -eq $b: a 不等于 b" fi if [ $a -ne $b ] then echo "$a -ne $b: a 不等于 b" else echo "$a -ne $b : a 等于 b" fi if [ $a -gt $b ] then echo "$a -gt $b: a 大于 b" else echo "$a -gt $b: a 不大于 b" fi if [ $a -lt $b ] then echo "$a -lt $b: a 小于 b" else echo "$a -lt $b: a 不小于 b" fi if [ $a -ge $b ] then echo "$a -ge $b: a 大于或等于 b" else echo "$a -ge $b: a 小于 b" fi if [ $a -le $b ] then echo "$a -le $b: a 小于或等于 b" else echo "$a -le $b: a 大于 b" fi
Wykonaj skrypt, wyjście jest w następujący sposób:
10 -eq 20: a 不等于 b 10 -ne 20: a 不等于 b 10 -gt 20: a 不大于 b 10 -lt 20: a 小于 b 10 -ge 20: a 小于 b 10 -le 20: a 小于或等于 b
Poniższa tabela zawiera listę często używanych operatorów logicznych, zakładając zmienną 10, zmienna b jest 20:
operatorzy | wyjaśnienie | Przykłady |
---|---|---|
! | Dla operacji, wyrażenie jest prawdziwe zwraca false, w przeciwnym wypadku zwraca wartość true. | [! Fałsz] zwraca true. |
-o | Lub obsługi, istnieje prawdziwa wyrażenie zwraca wartość true. | [$ A -lt 20 -o $ b -gt 100] zwraca true. |
-a | A operacje te dwa wyrażenia są prawdziwe przed zwróceniem prawdziwe. | [$ A -lt 20 -a $ b -gt 100] zwraca fałsz. |
operatory logiczne przykłady przedstawiają się następująco:
#!/bin/bash # author:本教程 # url:www.w3write.com a=10 b=20 if [ $a != $b ] then echo "$a != $b : a 不等于 b" else echo "$a != $b: a 等于 b" fi if [ $a -lt 100 -a $b -gt 15 ] then echo "$a -lt 100 -a $b -gt 15 : 返回 true" else echo "$a -lt 100 -a $b -gt 15 : 返回 false" fi if [ $a -lt 100 -o $b -gt 100 ] then echo "$a -lt 100 -o $b -gt 100 : 返回 true" else echo "$a -lt 100 -o $b -gt 100 : 返回 false" fi if [ $a -lt 5 -o $b -gt 100 ] then echo "$a -lt 100 -o $b -gt 100 : 返回 true" else echo "$a -lt 100 -o $b -gt 100 : 返回 false" fi
Wykonaj skrypt, wyjście jest w następujący sposób:
10 != 20 : a 不等于 b 10 -lt 100 -a 20 -gt 15 : 返回 true 10 -lt 100 -o 20 -gt 100 : 返回 true 10 -lt 100 -o 20 -gt 100 : 返回 false
Poniżej opisano logicznego operatora Shell, przy założeniu zmiennej 10, zmienna b jest 20:
operatorzy | wyjaśnienie | Przykłady |
---|---|---|
&& | logiczne AND | [[$ A -lt 100 && $ b -gt 100]] zwraca false |
|| | logiczne OR | [[$ A -lt 100 || $ b -gt 100]] Zwraca TRUE |
Przykłady operatorów logicznych są następujące:
#!/bin/bash # author:本教程 # url:www.w3write.com a=10 b=20 if [[ $a -lt 100 && $b -gt 100 ]] then echo "返回 true" else echo "返回 false" fi if [[ $a -lt 100 || $b -gt 100 ]] then echo "返回 true" else echo "返回 false" fi
Wykonaj skrypt, wyjście jest w następujący sposób:
返回 false 返回 true
Poniższa tabela zawiera listę często używanych operatorów ciągów, przyjęte jako zmienna "abc", zmienna B "EFG":
operatorzy | wyjaśnienie | Przykłady |
---|---|---|
= | Wykrywanie dwa ciągi są równe, równe Zwraca true. | [$ A = $ b] zwraca false. |
! = | Wykrywanie, czy dwa ciągi są równe, a nie równe zwraca true. | [$ A! = $ B] zwraca true. |
-z | Wykrywanie czy długość łańcucha wynosi od 0 do 0 zwraca prawda. | [-z $ A] zwraca false. |
-n | Wykrywanie czy długość łańcucha wynosi 0, niezerowy return true. | [-n $ A] zwraca true. |
Str | Wykrywanie, czy ciąg jest pusty, nie jest pusta return true. | [$ A] zwraca true. |
Operatorzy String przykłady przedstawiają się następująco:
#!/bin/bash # author:本教程 # url:www.w3write.com a="abc" b="efg" if [ $a = $b ] then echo "$a = $b : a 等于 b" else echo "$a = $b: a 不等于 b" fi if [ $a != $b ] then echo "$a != $b : a 不等于 b" else echo "$a != $b: a 等于 b" fi if [ -z $a ] then echo "-z $a : 字符串长度为 0" else echo "-z $a : 字符串长度不为 0" fi if [ -n $a ] then echo "-n $a : 字符串长度不为 0" else echo "-n $a : 字符串长度为 0" fi if [ $a ] then echo "$a : 字符串不为空" else echo "$a : 字符串为空" fi
Wykonaj skrypt, wyjście jest w następujący sposób:
abc = efg: a 不等于 b abc != efg : a 不等于 b -z abc : 字符串长度不为 0 -n abc : 字符串长度不为 0 abc : 字符串不为空
Operator testowy plik jest używany do wykrywania różnych atrybutów plików Unix.
Atrybut wykrywania opisany w następujący sposób:
operatorzy | wyjaśnienie | Przykłady |
---|---|---|
-b plik | Wykrywanie, czy plik jest plikiem urządzenia blokowego, a jeśli tak, to zwraca true. | [-b $ File] zwraca fałsz. |
-c plik | Wykrywanie, czy plik jest plikiem urządzenia znakowego, a jeśli tak, to zwraca true. | [-c $ File] zwraca fałsz. |
-d plik | Wykrywanie, czy plik jest katalogiem, a jeśli tak, to zwraca true. | [-d $ File] zwraca fałsz. |
-f plik | Wykrywanie, czy plik jest zwykłym plikiem (ani katalogu plik lub urządzenie), a jeśli tak, to zwraca true. | [-f $ Plik] zwraca true. |
-g plik | Wykrywanie, czy plik ma nieco SGID, a jeśli tak, to zwraca true. | [-g $ File] zwraca fałsz. |
-k plik | Wykrywanie, czy plik ma lepką Sticky bit (bit), a jeśli tak, to zwraca true. | [-k $ File] zwraca fałsz. |
-p plik | Wykrywanie, czy plik jest nazwany potok, a jeśli tak, to zwraca true. | [-p $ File] zwraca fałsz. |
-u plik | Wykrywanie, czy plik ma bit SUID, a jeśli tak, to zwraca true. | [-u $ File] zwraca fałsz. |
-r plik | Wykrywa, czy plik jest czytelny, a jeśli tak, to zwraca true. | [-r $ Plik] zwraca true. |
-w plik | Wykrywanie, czy plik można zapisać, a jeśli tak, to zwraca true. | [-w $ Plik] zwraca true. |
-x plik | Wykrywanie, czy plik jest wykonywalny, a jeśli tak, to zwraca true. | [-x $ Plik] zwraca true. |
-s plik | Wykrywanie, czy plik jest pusty (rozmiar pliku jest większy niż 0), nie jest pusta return true. | [-s $ File] zwraca true. |
-e plik | Wykrywanie pliku (w tym katalogu) istnieje, a jeśli tak, to zwraca true. | [-e $ Plik] zwraca true. |
#!/bin/bash # author:本教程 # url:www.w3write.com file="/var/www/w3big/test.sh" if [ -r $file ] then echo "文件可读" else echo "文件不可读" fi if [ -w $file ] then echo "文件可写" else echo "文件不可写" fi if [ -x $file ] then echo "文件可执行" else echo "文件不可执行" fi if [ -f $file ] then echo "文件为普通文件" else echo "文件为特殊文件" fi if [ -d $file ] then echo "文件是个目录" else echo "文件不是个目录" fi if [ -s $file ] then echo "文件不为空" else echo "文件为空" fi if [ -e $file ] then echo "文件存在" else echo "文件不存在" fi
Wykonaj skrypt, wyjście jest w następujący sposób:
文件可读 文件可写 文件可执行 文件为普通文件 文件不是个目录 文件不为空 文件存在