Unix / Linux - Shell-Basisoperatoren
Jede Shell unterstützt verschiedene Operatoren. Wir werden in diesem Kapitel ausführlich auf die Bourne-Shell (Standard-Shell) eingehen.
Wir werden nun die folgenden Operatoren diskutieren -
- Rechenzeichen
- Vergleichsoperatoren
- Boolesche Operatoren
- String-Operatoren
- Dateitestoperatoren
Die Bourne-Shell hatte ursprünglich keinen Mechanismus zum Ausführen einfacher arithmetischer Operationen, verwendet jedoch auch externe Programme awk oder expr.
Das folgende Beispiel zeigt, wie zwei Zahlen hinzugefügt werden -
#!/bin/sh
val=`expr 2 + 2`
echo "Total value : $val"
Das obige Skript generiert das folgende Ergebnis:
Total value : 4
Die folgenden Punkte müssen beim Hinzufügen berücksichtigt werden:
Zwischen Operatoren und Ausdrücken müssen Leerzeichen stehen. Zum Beispiel ist 2 + 2 nicht korrekt; es sollte als 2 + 2 geschrieben werden.
Der vollständige Ausdruck sollte zwischen eingeschlossen werden ‘ ‘, nannte den Backtick.
Rechenzeichen
Die folgenden arithmetischen Operatoren werden von Bourne Shell unterstützt.
Variable annehmen a hält 10 und variabel b hält dann 20 -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
+ (Ergänzung) | Fügt Werte auf beiden Seiten des Operators hinzu | `expr $ a + $ b` ergibt 30 |
- (Subtraktion) | Subtrahiert den rechten Operanden vom linken Operanden | `expr $ a - $ b` ergibt -10 |
* (Multiplikation) | Multipliziert Werte auf beiden Seiten des Operators | `expr $ a \ * $ b` ergibt 200 |
/ (Teilung) | Teilt den linken Operanden durch den rechten Operanden | `expr $ b / $ a` ergibt 2 |
% (Modul) | Teilt den linken Operanden durch den rechten Operanden und gibt den Rest zurück | `expr $ b% $ a` ergibt 0 |
= (Aufgabe) | Weist den rechten Operanden dem linken Operanden zu | a = $ b würde a den Wert von b zuweisen |
== (Gleichheit) | Vergleicht zwei Zahlen. Wenn beide gleich sind, wird true zurückgegeben. | [$ a == $ b] würde false zurückgeben. |
! = (Nicht Gleichheit) | Vergleicht zwei Zahlen. Wenn beide unterschiedlich sind, wird true zurückgegeben. | [$ a! = $ b] würde true zurückgeben. |
Es ist sehr wichtig zu verstehen, dass sich alle bedingten Ausdrücke in eckigen Klammern mit Leerzeichen um sie herum befinden sollten [ $a == $b ] ist richtig, während, [$a==$b] ist falsch.
Alle arithmetischen Berechnungen werden mit langen ganzen Zahlen durchgeführt.
Vergleichsoperatoren
Bourne Shell unterstützt die folgenden Vergleichsoperatoren, die für numerische Werte spezifisch sind. Diese Operatoren funktionieren nur für Zeichenfolgenwerte, wenn ihr Wert numerisch ist.
Die folgenden Operatoren überprüfen beispielsweise eine Beziehung zwischen 10 und 20 sowie zwischen "10" und "20", jedoch nicht zwischen "zehn" und "zwanzig".
Variable annehmen a hält 10 und variabel b hält dann 20 -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
-eq | Überprüft, ob der Wert von zwei Operanden gleich ist oder nicht. Wenn ja, wird die Bedingung erfüllt. | [$ a -eq $ b] ist nicht wahr. |
-ne | Überprüft, ob der Wert von zwei Operanden gleich ist oder nicht. Wenn die Werte nicht gleich sind, wird die Bedingung erfüllt. | [$ a -ne $ b] ist wahr. |
-gt | Überprüft, ob der Wert des linken Operanden größer als der Wert des rechten Operanden ist. Wenn ja, wird die Bedingung erfüllt. | [$ a -gt $ b] ist nicht wahr. |
-lt | Überprüft, ob der Wert des linken Operanden kleiner als der Wert des rechten Operanden ist. Wenn ja, wird die Bedingung erfüllt. | [$ a -lt $ b] ist wahr. |
-ge | Überprüft, ob der Wert des linken Operanden größer oder gleich dem Wert des rechten Operanden ist. Wenn ja, wird die Bedingung erfüllt. | [$ a -ge $ b] ist nicht wahr. |
-le | Überprüft, ob der Wert des linken Operanden kleiner oder gleich dem Wert des rechten Operanden ist. Wenn ja, wird die Bedingung erfüllt. | [$ a -le $ b] ist wahr. |
Es ist sehr wichtig zu verstehen, dass alle bedingten Ausdrücke in eckigen Klammern mit Leerzeichen um sie herum platziert werden sollten. Zum Beispiel,[ $a <= $b ] ist richtig, während, [$a <= $b] ist falsch.
Boolesche Operatoren
Die folgenden Booleschen Operatoren werden von der Bourne-Shell unterstützt.
Variable annehmen a hält 10 und variabel b hält dann 20 -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
! | Das ist logische Negation. Dies kehrt einen wahren Zustand in einen falschen um und umgekehrt. | [! false] ist wahr. |
-o | Das ist logisch OR. Wenn einer der Operanden wahr ist, wird die Bedingung wahr. | [$ a -lt 20 -o $ b -gt 100] ist wahr. |
-a | Das ist logisch AND. Wenn beide Operanden wahr sind, wird die Bedingung wahr, andernfalls falsch. | [$ a -lt 20 -a $ b -gt 100] ist falsch. |
String-Operatoren
Die folgenden Zeichenfolgenoperatoren werden von Bourne Shell unterstützt.
Variable annehmen a hält "abc" und variabel b hält dann "efg" -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
= | Überprüft, ob der Wert von zwei Operanden gleich ist oder nicht. Wenn ja, wird die Bedingung erfüllt. | [$ a = $ b] ist nicht wahr. |
!= | Überprüft, ob der Wert von zwei Operanden gleich ist oder nicht. Wenn die Werte nicht gleich sind, wird die Bedingung erfüllt. | [$ a! = $ b] ist wahr. |
-z | Überprüft, ob die angegebene Zeichenfolgenoperandengröße Null ist. Wenn die Länge Null ist, wird true zurückgegeben. | [-z $ a] ist nicht wahr. |
-n | Überprüft, ob die angegebene Größe des Zeichenfolgenoperanden ungleich Null ist. Wenn die Länge ungleich Null ist, wird true zurückgegeben. | [-n $ a] ist nicht falsch. |
str | Überprüft, ob strist nicht die leere Zeichenfolge; Wenn es leer ist, gibt es false zurück. | [$ a] ist nicht falsch. |
Dateitestoperatoren
Wir haben einige Operatoren, mit denen verschiedene Eigenschaften einer Unix-Datei getestet werden können.
Nehmen Sie eine Variable an file enthält einen vorhandenen Dateinamen "test", dessen Größe 100 Bytes beträgt und hat read, write und execute Erlaubnis am -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
-b file | Überprüft, ob es sich bei der Datei um eine Blockspezialdatei handelt. Wenn ja, wird die Bedingung erfüllt. | [-b $ file] ist falsch. |
-c file | Überprüft, ob es sich bei der Datei um eine Zeichenspezialdatei handelt. Wenn ja, wird die Bedingung erfüllt. | [-c $ file] ist falsch. |
-d file | Überprüft, ob die Datei ein Verzeichnis ist. Wenn ja, wird die Bedingung erfüllt. | [-d $ file] ist nicht wahr. |
-f file | Überprüft, ob es sich bei der Datei um eine normale Datei handelt, im Gegensatz zu einem Verzeichnis oder einer speziellen Datei. Wenn ja, wird die Bedingung erfüllt. | [-f $ file] ist wahr. |
-g file | Überprüft, ob für die Datei das gesetzte SGID-Bit (Group Group ID) gesetzt ist. Wenn ja, wird die Bedingung erfüllt. | [-g $ file] ist falsch. |
-k file | Überprüft, ob das Sticky-Bit der Datei gesetzt ist. Wenn ja, wird die Bedingung erfüllt. | [-k $ file] ist falsch. |
-p file | Überprüft, ob die Datei eine Named Pipe ist. Wenn ja, wird die Bedingung erfüllt. | [-p $ file] ist falsch. |
-t file | Überprüft, ob der Dateideskriptor geöffnet und einem Terminal zugeordnet ist. Wenn ja, wird die Bedingung erfüllt. | [-t $ file] ist falsch. |
-u file | Überprüft, ob für die Datei das SUID-Bit (Set User ID) gesetzt ist. Wenn ja, wird die Bedingung erfüllt. | [-u $ file] ist falsch. |
-r file | Überprüft, ob die Datei lesbar ist. Wenn ja, wird die Bedingung erfüllt. | [-r $ file] ist wahr. |
-w file | Überprüft, ob die Datei beschreibbar ist. Wenn ja, wird die Bedingung erfüllt. | [-w $ file] ist wahr. |
-x file | Überprüft, ob die Datei ausführbar ist. Wenn ja, wird die Bedingung erfüllt. | [-x $ file] ist wahr. |
-s file | Überprüft, ob die Datei größer als 0 ist. Wenn ja, dann wird die Bedingung wahr. | [-s $ file] ist wahr. |
-e file | Überprüft, ob eine Datei vorhanden ist. ist wahr, auch wenn die Datei ein Verzeichnis ist, aber existiert. | [-e $ file] ist wahr. |
C Shell-Operatoren
Der folgende Link gibt Ihnen einen kurzen Überblick über C-Shell-Operatoren -
C Shell-Operatoren
Korn Shell Betreiber
Der folgende Link hilft Ihnen, die Korn Shell-Operatoren zu verstehen -
Korn Shell Betreiber