Latest web development tutorials

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.w3big.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 ... dann ... 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.w3big.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.w3big.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.w3big.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.w3big.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.w3big.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:

文件可读
文件可写
文件可执行
文件为普通文件
文件不是个目录
文件不为空
文件存在