(1) Zusammenfassung
Shell unterstützt wie andere Programmiersprachen eine Vielzahl von Operatoren, darunter:
- Rechenzeichen
- Vergleichsoperatoren
- boolescher Operator
- String-Operatoren
- Dateitestoperator
Native Bash unterstützt keine einfachen mathematischen Operationen, kann jedoch über andere Befehle wie awk und expr erreicht werden, wobei expr am häufigsten verwendet wird. expr ist ein Ausdrucksberechnungstool, mit dem Ausdrücke ausgewertet werden können. Einzelheiten finden Sie unter:
Linux————Arithmetische Befehle-CSDN-Blog
(2) Arithmetische Operatoren
Rechenzeichen
Die folgende Tabelle listet häufig verwendete arithmetische Operatoren auf, wobei davon ausgegangen wird, dass Variable a 60 und Variable b 20 ist:
Operator | veranschaulichen | Beispiel |
---|---|---|
+ | Zusatz | `expr $a + $b` ergibt 70. |
- | Subtraktion | `expr $a - $b` ergibt 40. |
* | Multiplikation | `expr $a \* $b` ergibt 1200. |
/ | Aufteilung | `expr $b / $a` ergibt 3. |
% | Rest nehmen | `expr $b % $a` ergibt 0. |
= | Abtretung | a=$b weist a den Wert der Variablen b zu. |
== | gleich. Wird verwendet, um zwei Zahlen zu vergleichen und „true“ zurückzugeben, wenn sie gleich sind. | [ $a == $b ] gibt false zurück. |
!= | nicht gleich. Wird verwendet, um zwei Zahlen zu vergleichen und „true“ zurückzugeben, wenn sie nicht gleich sind. | [ $a != $b ] gibt true zurück. |
Hinweis: Der bedingte Ausdruck muss in eckige Klammern gesetzt werden und Leerzeichen enthalten, zum Beispiel: [$a==$b ] ist falsch und muss als [ $a == $b ] geschrieben werden.
Beachten:
Beachten:
- Dem Multiplikationszeichen (*) muss ein Backslash (\) vorangestellt werden, um eine Multiplikation durchzuführen.
- Die Ausdruckssyntax der Shell in MAC lautet:$((Ausdruck)), hier das „*“ im Ausdruck; Nein Bedarf an Escape-Symbolen "\"
Zeige Ergebnisse:
Code:
#!/bin/bash
a=60
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
(3) Vergleichsoperatoren
Vergleichsoperatoren unterstützen nur Zahlen, keine Zeichenfolgen, es sei denn, der Wert der Zeichenfolge ist eine Zahl.
Die folgende Tabelle listet häufig verwendete relationale Operatoren auf, wobei davon ausgegangen wird, dass Variable a 10 und Variable b 20 ist:
Operator | veranschaulichen | Beispiel |
---|---|---|
-eq (Abkürzung für equal | Überprüft, ob zwei Zahlen gleich sind, und gibt „true“ zurück, wenn sie gleich sind. | [ $a -eq $b ] gibt false zurück. |
-ne(nicht gleich) | Prüft, ob zwei Zahlen ungleich sind, gibt true zurück, wenn sie nicht gleich sind. | [ $a -ne $b ] gibt true zurück. |
-gt(größer oder gleich sein | Überprüft, ob die Zahl links größer als die Zahl rechts ist. Wenn ja, wird „true“ zurückgegeben. | [ $a -gt $b ] gibt false zurück. |
-lt(kleiner als oder gleich sein | Überprüft, ob die Zahl links kleiner als die Zahl rechts ist. Wenn ja, wird „true“ zurückgegeben. | [ $a -lt $b ] gibt true zurück. |
-ge(größer | Überprüfen Sie, ob die Zahl links größer oder gleich der Zahl rechts ist. Wenn ja, geben Sie true zurück. | [ $a -ge $b ] gibt false zurück. |
-le(weniger | Überprüfen Sie, ob die Zahl links kleiner oder gleich der Zahl rechts ist. Wenn ja, geben Sie true zurück. | [ $a -le $b ] gibt true zurück. |
Text:
#!/bin/bash
a=10
b=if [ "$a" -eq "$b" ]; then
echo "$a -eq $b : a 等于 b"
else
echo "$a -eq $b : a 不等于 b"
fiif [ "$a" -ne "$b" ]; then
echo "$a -ne $b : a 不等于 b"
else
echo "$a - ne $b : a 等于 b"
fiif [ "$a" -gt "$b" ]; then
echo "$a -gt $b : a 大于 b"
else
echo "$a -gt $b : a 不大于 b"
fiif [ "$a" -lt "$b" ]; then
echo "$a -lt $b : a 小于 b"
else
echo "$a -lt $b : a 不小于 b"
fiif [ "$a" -ge "$b" ]; then
echo "$a -ge $b : a 大于或等于 b"
else
echo "$a -ge $b : a 小于 b"
fiif [ "$a" -le "$b" ]; then
echo "$a -le $b : a 小于或等于 b"
else
echo "$a -le $b : a 大于 b"
fi
(4) Boolesche Operatoren
Die folgende Tabelle listet häufig verwendete boolesche Operatoren auf, wobei davon ausgegangen wird, dass Variable a 10 und Variable b 20 ist:
Operator | veranschaulichen | Beispiel |
---|---|---|
! | Keine Operation, gibt „false“ zurück, wenn der Ausdruck wahr ist, andernfalls wird „true“ zurückgegeben. | [ ! false ] Gibt true zurück. |
-Ö | Oder-Operation, gibt true zurück, wenn ein Ausdruck wahr ist. | [ $a -lt 20 -o $b -gt 100 ] gibt true zurück. |
-A | Die UND-Operation gibt nur dann „true“ zurück, wenn beide Ausdrücke wahr sind. | [ $a -lt 20 -a $b -gt 100 ] gibt false zurück. |
Hinweis: Boolesche Operatoren müssen in [] platziert oder mit dem Testbefehl verwendet werden, um wirksam zu sein.
(5) String-Operatoren
In der folgenden Tabelle sind häufig verwendete Zeichenfolgenoperatoren aufgeführt, wobei davon ausgegangen wird, dass Variable a „abc“ und Variable b „abg“ ist:
Operator | veranschaulichen | Beispiel |
---|---|---|
=(oder== | Überprüft, ob zwei Zeichenfolgen gleich sind, und gibt „true“ zurück, wenn sie gleich sind. | [ $a = $b ] gibt false zurück. |
!= | Überprüft, ob zwei Zeichenfolgen ungleich sind, und gibt true zurück, wenn sie nicht gleich sind. | [ $a != $b ] gibt true zurück. |
-Mit | Überprüfen Sie, ob die Zeichenfolgenlänge 0 ist, und geben Sie true zurück, wenn sie 0 ist. | [ -z $a ] gibt false zurück. |
-N | Prüft, ob die Stringlänge nicht 0 ist, gibt true zurück, wenn sie nicht 0 ist. | [ -n "$a" ] gibt true zurück. |
$ | Überprüft, ob die Zeichenfolge nicht leer ist, und gibt true zurück, wenn sie nicht leer ist. | [ $a ] gibt true zurück. |
(6) Dateitestbetreiber
Dateitestoperatoren werden verwendet, um verschiedene Eigenschaften von Unix-Dateien zu erkennen.
Die Eigenschaftserkennung wird wie folgt beschrieben:
Operator | veranschaulichen | Beispiel |
---|---|---|
-b-Datei | Überprüft, ob es sich bei der Datei um eine Blockgerätedatei handelt, und gibt in diesem Fall „true“ zurück. | [ -b $file ] gibt false zurück. |
-c-Datei | Überprüft, ob es sich bei der Datei um eine Zeichengerätedatei handelt, und gibt in diesem Fall „true“ zurück. | [ -c $file ] gibt false zurück. |
-d-Datei | Überprüft, ob es sich bei der Datei um ein Verzeichnis handelt, und gibt in diesem Fall „true“ zurück. | [ -d $file ] gibt false zurück. |
-f-Datei | Überprüft, ob die Datei eine normale Datei ist (weder ein Verzeichnis noch eine Gerätedatei) und gibt in diesem Fall „true“ zurück. | [ -f $file ] gibt true zurück. |
-g-Datei | Überprüft, ob in der Datei das SGID-Bit gesetzt ist, und gibt in diesem Fall „true“ zurück. | [ -g $file ] gibt false zurück. |
-k-Datei | Überprüfen Sie, ob in der Datei das Sticky-Bit (Sticky Bit) gesetzt ist. Wenn ja, geben Sie true zurück. | [ -k $file ] gibt false zurück. |
-p-Datei | Überprüft, ob es sich bei der Datei um eine Named Pipe handelt, und gibt in diesem Fall „true“ zurück. | [ -p $file ] gibt false zurück. |
-u-Datei | Überprüft, ob in der Datei das SUID-Bit gesetzt ist, und gibt in diesem Fall „true“ zurück. | [ -u $file ] gibt false zurück. |
-r-Datei | Überprüft, ob die Datei lesbar ist und gibt in diesem Fall „true“ zurück. | [ -r $file ] gibt true zurück. |
-w-Datei | Überprüft, ob die Datei beschreibbar ist und gibt in diesem Fall „true“ zurück. | [ -w $file ] gibt true zurück. |
-x-Datei | Überprüft, ob die Datei ausführbar ist und gibt in diesem Fall „true“ zurück. | [ -x $file ] gibt true zurück. |
-s-Datei | Überprüfen Sie, ob die Datei leer ist (ob die Dateigröße größer als 0 ist), und geben Sie true zurück, wenn sie nicht leer ist. | [ -s $file ] gibt true zurück. |
-e Dateien | Überprüft, ob eine Datei (einschließlich eines Verzeichnisses) existiert und gibt in diesem Fall „true“ zurück. | [ -e $file ] gibt true zurück. |
Andere Checker:
- -S: Bestimmen Sie, ob eine Datei ein Socket ist.
- -L: Überprüfen Sie, ob die Datei existiert und ein symbolischer Link ist
#!/bin/bash
file="/var/www/runoob/test.sh"
if [ -r "$file" ]; then
echo "File readable"
else
echo "Die Datei ist nicht lesbar"
fiif [ -w "$file" ]; then
echo "File beschreibbar"
else
echo "Datei kann nicht geschrieben werden"
fiif [ -x "$file" ]; then
echo "File executable"
else
echo "Die Datei ist nicht ausführbar"
fiif [ -f "$file" ]; then
echo "Die Datei ist eine gewöhnliche Datei"
sonst < a i=3> echo "Die Datei ist eine spezielle Datei" fiif [ -d "$file" ]; then
echo "Die Datei ist ein Verzeichnis"
sonst< a i =3> echo "Die Datei ist kein Verzeichnis" fiif [ -s "$file" ]; then
echo "Die Datei ist nicht leer"
sonst< a i=3> echo "Die Datei ist leer" fiif [ -e "$file" ]; then
echo "Datei existiert"
sonst
echo "Die Datei existiert nicht"
fi
(7) Logische Operatoren
Im Folgenden werden die logischen Operatoren von Shell vorgestellt, vorausgesetzt, die Variable a ist 10 und die Variable b ist 20:
Operator | veranschaulichen | Beispiel |
---|---|---|
&& | Logisches UND | [[ $a -lt 100 && $b -gt 100 ]] gibt false zurück |
|| | Logisches ODER | [[ $a -lt 100 || $b -gt 100 ]] gibt true zurück |