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