Das beste Shell Basisoperatoren-Tutorial im Jahr 2024. In diesem Tutorial können Sie Arithmetische Operatoren,Relationale Operatoren,Boolesche Operatoren,Logische Operatoren,String-Operatoren,Dateitest-Operatoren, lernen
Shell und anderen Programmiersprachen unterstützt eine Vielzahl von Betreibern, einschließlich:
Nativer bash unterstützt keine einfache mathematische Operationen, sondern kann durch andere Befehle wie awk und expr, expr gebräuchlichste erreicht werden.
expr ist ein Ausdruck Berechnungstool, verwenden sie die Ausdrucksauswertung Vorgang abzuschließen.
Zum Beispiel können zwei Zahlen zu addieren (beachten Sie die Verwendung des `anti-Anführungszeichen anstelle von einfachen Anführungszeichen '):
#!/bin/bash val=`expr 2 + 2` echo "两数之和为 : $val"
Ausführung einer Instanz »
Führen Sie das Skript, ist die Ausgabe wie folgt:
两数之和为 : 4
Zwei Dinge zu beachten:
In der folgenden Tabelle sind die allgemeinen arithmetischen Operatoren, eine 10-Variable unter der Annahme, die Variable b 20:
Die Betreiber | Erklärung | Beispiele |
---|---|---|
+ | Zusatz | `Expr $ a + $ b 'Ergebnis ist 30. |
- | Subtraktion | `Expr $ a - $ b` Ergebnis ist -10. |
* | Multiplikation | `Expr $ a \ * $ b` Ergebnisse für 200. |
/ | Division | `Expr $ b / $ ist a` Ergebnis 2. |
% | Rest | `Expr $ b% $ a` Ergebnis ist 0. |
= | Zuordnung | a = $ b Variable b den Wert eines zuweisen. |
== | Equal. Verwendet zwei Zahlen zu vergleichen, gleiche return true. | [$ A == $ b] gibt false zurück. |
! = | Nicht gleich. Verwendet zwei Zahlen zu vergleichen sind nicht die gleichen Renditen wahr. | [$ A! = $ B] gibt true zurück. |
Hinweis: Der bedingte Ausdruck in eckigen Klammern gesetzt werden sollte, und ein Leerzeichen, zum Beispiel:[$ a == $ b] ist falsch und muss als[$ a == $ b]geschriebenwerden.
Arithmetische Operatoren Beispiele sind wie folgt:
#!/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
Führen Sie das Skript, ist die Ausgabe wie folgt:
a + b : 30 a - b : -10 a * b : 200 b / a : 2 b % a : 0 a 不等于 b
Hinweis:
- Multiplikationszeichen (*) müssen vor einem Backslash hinzugefügt werden (\), um die Multiplikation zu erreichen;
- wenn de. dann de. fi bedingte Anweisungen ist, wird die Follow-up abgedeckt.
- In der MAC - Shell von ausdr Syntax: $ ((Ausdruck)), wobei der Ausdruck "*" müssen Symbol zu entkommen " . \"
Relationale Operatoren nur digital zu unterstützen, nicht die Zeichenfolge unterstützen, sofern der Wert der Zeichenfolge eine Zahl ist.
In der folgenden Tabelle sind die häufigsten relationalen Operatoren verwendet, eine 10-Variable unter der Annahme, die Variable b 20:
Die Betreiber | Erklärung | Beispiele |
---|---|---|
-eq | Erkennen, ob zwei Zahlen gleich sind, gleich gibt true zurück. | [$ A -eq $ b] gibt false zurück. |
-ne | Erkennen, ob zwei Zahlen gleich sind, nicht gleich true zurück. | [$ A -ne $ b] gibt true zurück. |
-gt | Die linke größer ist als die Zahl auf der rechten Seite erfasst wird, und wenn ja, es gibt wahr zurück. | [$ A -gt $ b] gibt false zurück. |
-lt | Detektieren der Anzahl geringer ist als die rechts von der linken Seite, und wenn ja, es gibt wahr zurück. | [$ A -lt $ b] gibt true zurück. |
-ge | Erfassen, ob die Anzahl gleich der rechten Seite der linken Seite des großen, und wenn ja, gibt er wahr. | [$ A -ge $ b] gibt false zurück. |
-le | Ob die Anzahl der Erfassung von weniger als oder gleich rechts nach links, wenn es ist, gibt es wahr. | [$ A -le $ b] gibt true zurück. |
Relationale Operatoren Beispiele sind wie folgt:
#!/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
Führen Sie das Skript, ist die Ausgabe wie folgt:
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
In der folgenden Tabelle sind die häufigsten Boolesche Operatoren verwendet, eine 10-Variable unter der Annahme, die Variable b 20:
Die Betreiber | Erklärung | Beispiele |
---|---|---|
! | Nicht-Betrieb ist der Ausdruck wahr false zurück, sonst ist es wahr zurückgibt. | [! False] gibt true zurück. |
-o | ODER-Operation gibt es ein wahrer Ausdruck true zurückgibt. | [$ A -lt 20 -o $ b -gt 100] true zurück. |
-a | Und Operationen sind die beiden Ausdrücke wahr, bevor wahr zurück. | [$ A -lt 20 -a $ b -gt 100] false zurück. |
Boolesche Operatoren Beispiele sind wie folgt:
#!/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
Führen Sie das Skript, ist die Ausgabe wie folgt:
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
Im Folgenden werden die logischen Operator Shell, eine 10-Variable unter der Annahme, ist die Variable b 20:
Die Betreiber | Erklärung | Beispiele |
---|---|---|
&& | Logisches UND | [[$ A -lt 100 && $ b -gt 100]] false zurück |
|| | Logisches ODER | [[$ A -lt 100 || $ b -gt 100]] Gibt true zurück |
Beispiele von logischen Operatoren sind wie folgt:
#!/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
Führen Sie das Skript, ist die Ausgabe wie folgt:
返回 false 返回 true
Die folgende Tabelle listet häufig String-Operatoren verwendet wird, als Variable "abc" angenommen, die Variable b "efg":
Die Betreiber | Erklärung | Beispiele |
---|---|---|
= | Erkennen von zwei Strings gleich sind, gleich true zurück. | [$ A = $ b] gibt false zurück. |
! = | Erkennen, ob zwei Strings gleich sind, nicht gleich true zurück. | [$ A! = $ B] gibt true zurück. |
-Z | Nachweis, ob die Stringlänge 0 für 0 liefert wahr ist. | [-z A $] gibt false zurück. |
-n | Erkennen, ob die Stringlänge 0, ungleich Null return true. | [-n A $] gibt true zurück. |
str | Erkennen, ob der String leer ist, nicht leer return true. | [$ A] gibt true zurück. |
String-Operatoren Beispiele sind wie folgt:
#!/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
Führen Sie das Skript, ist die Ausgabe wie folgt:
abc = efg: a 不等于 b abc != efg : a 不等于 b -z abc : 字符串长度不为 0 -n abc : 字符串长度不为 0 abc : 字符串不为空
Dateitestoperator wird verwendet, um eine Vielzahl von Unix-Dateiattribute zu erkennen.
Attributerkennung wie folgt beschrieben:
Die Betreiber | Erklärung | Beispiele |
---|---|---|
-b Datei | Nachweis, ob die Datei ein Blockgerätedatei, und wenn ja, es gibt true zurück. | [-b $ File] gibt false zurück. |
-c Datei | Nachweis, ob die Datei ist eine Zeichengerätedatei, und wenn ja, es gibt true zurück. | [-c $ File] gibt false zurück. |
-d Datei | Nachweis, ob die Datei ein Verzeichnis ist, und wenn ja, es gibt true zurück. | [-d $ File] gibt false zurück. |
-f file | Erkennen, ob die Datei eine reguläre Datei ist (weder Verzeichnis oder Geräte-Datei), und wenn ja, es gibt true zurück. | [-f $ File] gibt true zurück. |
-g Datei | Erkennen, ob eine Datei hat das SGID Bit, und wenn ja, es gibt true zurück. | [-g $ File] gibt false zurück. |
-k Datei | Erkennen, ob eine Datei das Sticky-Bit (Sticky Bit) hat, und wenn ja, es gibt true zurück. | [-k $ File] gibt false zurück. |
-p-Datei | Nachweis, ob die Datei eine benannte Pipe, und wenn ja, es gibt true zurück. | [-p $ File] gibt false zurück. |
-u Datei | Erkennen, ob eine Datei hat das SUID-Bit, und wenn ja, es gibt true zurück. | [-u $ File] gibt false zurück. |
-r Datei | Es erkennt, ob eine Datei lesbar ist, und wenn ja, gibt sie wahr. | [-r $ File] gibt true zurück. |
-w Datei | Nachweis, ob die Datei geschrieben werden kann, und wenn ja, gibt er wahr. | [-w $ File] gibt true zurück. |
-x-Datei | Erkennen, ob die Datei ausführbar ist, und wenn ja, es gibt true zurück. | [-x $ File] gibt true zurück. |
-s Datei | Erkennen, ob die Datei leer ist (die Dateigröße größer als 0), nicht leer return true. | [-s $ File] gibt true zurück. |
-e-Datei | Detect-Datei (einschließlich Verzeichnis) vorhanden ist, und wenn ja, es gibt true zurück. | [-e $ File] gibt true zurück. |
#!/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
Führen Sie das Skript, ist die Ausgabe wie folgt:
文件可读 文件可写 文件可执行 文件为普通文件 文件不是个目录 文件不为空 文件存在