Linux ------------Shell-Grundoperatoren

(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"
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
 

 

(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"
fi

if [ -w "$file" ]; then
    echo "File beschreibbar"
else
    echo "Datei kann nicht geschrieben werden"
fi

if [ -x "$file" ]; then
    echo "File executable"
else
    echo "Die Datei ist nicht ausführbar"
fi

if [ -f "$file" ]; then
    echo "Die Datei ist eine gewöhnliche Datei"
sonst < a i=3> echo "Die Datei ist eine spezielle Datei" fi

if [ -d "$file" ]; then
    echo "Die Datei ist ein Verzeichnis"
sonst< a i =3> echo "Die Datei ist kein Verzeichnis" fi

if [ -s "$file" ]; then
    echo "Die Datei ist nicht leer"
sonst< a i=3> echo "Die Datei ist leer" fi

if [ -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

 

Supongo que te gusta

Origin blog.csdn.net/qq_63976098/article/details/134153235
Recomendado
Clasificación