Latest web development tutorials

Shell Process Control

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.


wenn sonst

wenn

if-Anweisung Syntax:

if condition
then
    command1 
    command2
    ...
    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

wenn sonst Syntax:

if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi

wenn else-if-else

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:

两个数字相等!

for-Schleife

Wie bei anderen Programmiersprachen, Shell-Unterstützung für Schleife.

Das allgemeine Format der for-Schleife:

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

Eine einzelne Zeile:

for var in item1 item2 ... 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-Anweisung

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本教程 是一部好电影

Endlos-Schleife

Endlosschleife Syntax:

while :
do
    command
done

oder

while true
do
    command
done

oder

for (( ; ; ))


bis Schleife

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.


Fall

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
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    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

Aus der Schleife

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.

Befehl break

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 之间的! 游戏结束

fortsetzen

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.


esac

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.