Das beste Shell Process Control-Tutorial im Jahr 2024. In diesem Tutorial können Sie wenn sonst,for-Schleife,while-Anweisung,bis Schleife,Fall,Aus der Schleife,esac, lernen
Und Java, PHP und andere Sprachen sind nicht die gleichen, sh Flusskontrolle ist nicht leer, zum Beispiel (Die im Anschluss an die Steuer Schreiben PHP-Prozess ist):
<?php if (isset($_GET["q"])) { search(q); } else { // 不做任何事情 }
In sh / bash möglicherweise nicht so schriftlich, ist keine Aussage anders, wenn die Verzweigung ausgeführt wird, kann dies sonst nicht schreiben.
if-Anweisung Syntax:
if condition then command1 command2 de. commandN fi
Eine einzelne Zeile (für Terminal-Eingabeaufforderung):
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
Das Ende des fi umgekehrt wird, wenn die Schreibweise wird später ähnliches auftreten.
wenn sonst Syntax:
if condition then command1 command2 de. commandN else command fi
wenn else-if-else Syntax:
if condition1 then command1 elif condition2 then command2 else commandN fi
Die folgenden Beispiele bestimmen, ob zwei Variablen gleich sind:
a=10 b=20 if [ $a == $b ] then echo "a 等于 b" elif [ $a -gt $b ] then echo "a 大于 b" elif [ $a -lt $b ] then echo "a 小于 b" else echo "没有符合的条件" fi
Ausgang:
a 小于 b
wenn sonst Aussagen werden häufig in Verbindung mit Testbefehl wie folgt verwendet werden:
num1=$[2*3] num2=$[1+5] if test $[num1] -eq $[num2] then echo '两个数字相等!' else echo '两个数字不相等!' fi
Ausgang:
两个数字相等!
Wie bei anderen Programmiersprachen, Shell-Unterstützung für Schleife.
Das allgemeine Format der for-Schleife:
for var in item1 item2 de. itemN do command1 command2 de. commandN done
Eine einzelne Zeile:
for var in item1 item2 de. itemN; do command1; command2… done;
Wenn der Wert der Variablen in der Liste, für Schleife, wenn alle Befehle ausgeführt wird, erhalten Variablennamen eine Liste des aktuellen Wertes. Befehl kann jede gültige Shell-Befehle und Anweisungen sein. in der Liste können die Ersatz-String und Dateinamen enthalten.
in der Liste ist optional, wenn Sie es nicht verwenden, für das Recycling Standort Kommandozeilenparameter.
Zum Beispiel kann die Reihenfolge der Ausgabe aktuelle Liste der Zahlen:
for loop in 1 2 3 4 5 do echo "The value is: $loop" done
Ausgang:
The value is: 1 The value is: 2 The value is: 3 The value is: 4 The value is: 5
Sequenziell gibt eine Reihe von Zeichen:
for str in 'This is a string' do echo $str done
Ausgang:
This is a string
while-Schleife kontinuierlich um eine Reihe von Befehlen auszuführen, ist es auch zum Lesen von Daten aus der Eingabedatei verwendet wird; Befehl normalerweise Bedingungen testen. Das Format ist:
while condition do command done
Im Folgenden ist eine grundlegende while-Schleife Testbedingungen: Wenn int ist kleiner als oder gleich 5, die Bedingung wahr zurückgibt. int von Null jedesmal, wenn die Schleifenverarbeitung, plus 1 int starten. Führen Sie das obige Skript gibt die Nummer 1-5, dann beenden.
#!/bin/sh int=1 while(( $int<=5 )) do echo $int let "int++" done
Führen Sie das Skript, Ausgabe:
1 2 3 4 5
Verwenden verwendet Bash lassen Befehl, der verwendet wird , einen oder mehrere Ausdrücke auszuführen, variable Berechnungen brauchen nicht $ hinzufügen Variablen darstellen, speziell Käufer: Bash lassen Befehl
.während kann Schleife über die Tastatur Informationen ausgelesen werden. Im folgenden Beispiel wird die Eingabe von Informationen auf die Variable FILM, drücken Sie <Strg-D> Ende Schleife gesetzt.
echo '按下 <CTRL-D> 退出' echo -n '输入你最喜欢的电影名: ' while read FILM do echo "是的!$FILM 是一部好电影" done
Führen Sie das Skript, eine Ausgabe ähnlich der folgenden:
按下 <CTRL-D> 退出 输入你最喜欢的电影名: w3cschool本教程 是的!w3cschool本教程 是一部好电影
Endlosschleife Syntax:
while : do command done
oder
while true do command done
oder
for (( ; ; ))
bis Schleife eine Reihe von Befehlen ausführt, bis die Bedingung erfüllt ist, wenn gestoppt.
bis Schleife und While-Schleife auf der entgegengesetzten Ansatz.
Normalerweise während Schleife, bis eine bessere Durchblutung, aber an einem gewissen Punkt - und nur in seltenen Fällen, bis der Zyklus nützlicher.
bis Syntax:
until condition do command done
Die Bedingungen können alle Testbedingungen sein, tritt der Test am Ende des Zyklus, und die Schleife mindestens einmal ausgeführt - bitte diesen Punkt beachten.
Shell case-Anweisung ist mehr select-Anweisungen. Sie können die Case-Anweisung verwenden, um einen Wert mit einem Muster übereinstimmen, wenn das Spiel erfolgreich ist, führen Befehle entsprechen. Case-Anweisung Format ist wie folgt:
case 值 in 模式1) command1 command2 de. commandN ;; 模式2) command1 command2 de. commandN ;; esac
Bei der Arbeit, wie oben gezeigt. Der Wert muss in ein Wort befolgt werden, muss jedes Modell Klammer schließen werden. Der Wert kann variabel oder konstant sein. Nachdem ein Muster im Einklang mit den Werten gefunden, bei dem alle Befehle bis ;; ausgeführt.
Der Wert jedes Spiel wird ein Muster erkennen. Sobald das Pattern-Matching, passende Muster nach den entsprechenden Befehl ausführt nicht weiterhin mehr auf andere Verkehrsträger. Wenn kein passender ein Muster ist, verwenden Sie ein Sternchen * den Wert zu erfassen, und dann hinter dem Befehl ausführen.
Das folgende Skript fordert für 1-4, mit jedem Mustervergleich:
echo '输入 1 到 4 之间的数字:' echo '你输入的数字为:' read aNum case $aNum in 1) echo '你选择了 1' ;; 2) echo '你选择了 2' ;; 3) echo '你选择了 3' ;; 4) echo '你选择了 4' ;; *) echo '你没有输入 1 到 4 之间的数字' ;; esac
Geben Sie einen anderen Inhalt, wird es unterschiedliche Ergebnisse sein, wie zum Beispiel:
输入 1 到 4 之间的数字: 你输入的数字为: 3 你选择了 3
In dem Zyklus, und manchmal nicht erfüllt es nicht die aus der Schleife gezwungen Bedürfnisse, wenn die Schleife Ende Zustand, Shell zwei Befehle verwendet diese Funktion zu implementieren: Pause und weiter.
brechen Befehl aus allen Schleifen ermöglicht (Schleife beendet die Ausführung aller zurück).
Das folgende Beispiel, das Skript in einer Endlosschleife, bis der Benutzer gibt eine Zahl größer als 5 ist. Um aus diesem Kreislauf und Rückkehr in die Shell-Prompt, verwenden Sie den Befehl break.
#!/bin/bash while : do echo -n "输入 1 到 5 之间的数字:" read aNum case $aNum in 1|2|3|4|5) echo "你输入的数字为 $aNum!" ;; *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束" break ;; esac done
Die Umsetzung des obigen Codes ist die Ausgabe:
输入 1 到 5 之间的数字:3 你输入的数字为 3! 输入 1 到 5 之间的数字:7 你输入的数字不是 1 到 5 之间的! 游戏结束
weiter und Befehls Befehl ähnlich, mit einem Unterschied zu brechen, ist es nicht aus allen Schleifen springen, gerade aus dem aktuellen Zyklus.
Um das obige Beispiel zu ändern:
#!/bin/bash while : do echo -n "输入 1 到 5 之间的数字: " read aNum case $aNum in 1|2|3|4|5) echo "你输入的数字为 $aNum!" ;; *) echo "你输入的数字不是 1 到 5 之间的!" continue echo "游戏结束" ;; esac done
Führen Sie wurde der Code gefunden, wenn die Eingangsnummer größer als 5, wird dieser Fall nicht um den Zyklus zu beenden, die Anweisung echo "Spiel vorbei ist!" Wird nie ausgeführt werden.
Grammatik und sprachliche Unterschiede in der Rechtssache C-Familie groß ist, dauert es eine ESAC (Fall ist wiederum) markieren das Ende jeweils Zweig mit einer rechten Klammer, vertreten durch zwei Semikolons brechen.