Shell Basisoperatoren
Shell und anderen Programmiersprachen unterstützt eine Vielzahl von Betreibern, einschließlich:
- Arithmetische Operatoren
- Relationale Operatoren
- Boolesche Operatoren
- String-Operatoren
- Dateitest-Operatoren
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:
- Zwischen Ausdrücke und Operatoren müssen einen Platz haben, zum Beispiel 2 + 2 ist falsch, müssen Sie 2 + 2 schreiben, die wir mit den meisten Programmiersprachen vertraut sind, sind nicht gleich.
- Vollständige Ausdruck sein `` enthalten sind, beachten Sie, dass dieses Zeichen nicht häufig in einfachen Anführungszeichen verwendet wird, unter der Esc-Taste.
Arithmetische Operatoren
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.
Beispiele
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
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. |
Beispiele
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
Boolesche Operatoren
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. |
Beispiele
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
Logische Operatoren
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
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
String-Operatoren
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. |
Beispiele
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 : 字符串不为空
Dateitest-Operatoren
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. |
Beispiele
Variable-Datei gibt die Datei "/var/www/w3big/test.sh", ist seine Größe 100 Bytes, mit rwx Berechtigungen. Der folgende Code wird verschiedene Attribute der Datei erkennen:#!/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:
文件可读 文件可写 文件可执行 文件为普通文件 文件不是个目录 文件不为空 文件存在