Latest web development tutorials

Process Control Shell

Et Java, PHP et d'autres langues ne sont pas les mêmes, le contrôle de flux sh est pas vide, par exemple (Ce qui suit est l'écriture PHP de contrôle de processus):

<?php
if (isset($_GET["q"])) {
    search(q);
}
else {
    // 不做任何事情
}

Dans sh / bash ne peut pas être par écrit, aucune instruction est exécutée si la branche d'autre, ne pas écrire cette autre.


si quelque

si

si syntaxe de l'instruction:

if condition
then
    command1 
    command2
    ...
    commandN 
fi

Une seule ligne (pour l'invite de commande terminal):

if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi

La fin de la fi est inversée si l'orthographe plus tard rencontrera similaire.

si quelque

si la syntaxe d'autre:

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

si quelque-chose si

si d'autre, si la syntaxe d'autre:

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

Les exemples suivants déterminent si deux variables sont égales:

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

sortie:

a 小于 b

si else sont souvent utilisés en conjonction avec la commande d'essai comme suit:

num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
    echo '两个数字相等!'
else
    echo '两个数字不相等!'
fi

sortie:

两个数字相等!

pour la boucle

Comme d'autres langages de programmation, le soutien de Shell pour la boucle.

Le format général de la boucle:

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

Une seule ligne:

for var in item1 item2 ... itemN; do command1; command2… done;

Lorsque la valeur de la variable dans la liste, pour la boucle qui est exécutée une fois toutes les commandes, les noms de variables obtenir une liste de la valeur actuelle. Commande peut être tout valide les commandes et les déclarations shell. dans la liste peut inclure la chaîne de remplacement et le nom du fichier.

dans la liste est facultative, si vous ne l'utilisez pas, pour le recyclage de l'emplacement des paramètres de ligne de commande.

Par exemple, l'ordre de sortie liste actuelle des numéros:

for loop in 1 2 3 4 5
do
    echo "The value is: $loop"
done

sortie:

The value is: 1
The value is: 2
The value is: 3
The value is: 4
The value is: 5

Séquentiellement émet une chaîne de caractères:

for str in 'This is a string'
do
    echo $str
done

sortie:

This is a string

while

tandis que la boucle pour exécuter en continu une série de commandes, il est également utilisé pour lire les données du fichier d'entrée, commande tester généralement des conditions. Le format est le suivant:

while condition
do
    command
done

Ce qui suit est une base tandis que les conditions de test en boucle: si int est inférieur ou égal à 5, la condition retourne vrai. int démarrer de zéro chaque fois que le traitement de la boucle, plus 1 int. Exécutez le script ci-dessus renvoie le numéro 1-5, puis terminer.

#!/bin/sh
int=1
while(( $int<=5 ))
do
        echo $int
        let "int++"
done

Exécutez le script, sortie:

1
2
3
4
5

Utilisez utilisé Bash laissez commande, qui est utilisé pour effectuer une ou plusieurs expressions, calculs variables n'a pas besoin d'ajouter $ pour représenter les variables, en particulier les acheteurs: Bash commande laissez

.

tandis que la boucle peut être utilisé pour lire les informations de clavier. L'exemple suivant, les informations d'entrée est réglé sur FILM variables, appuyez sur <Ctrl-D> boucle d'extrémité.

echo '按下 <CTRL-D> 退出'
echo -n '输入你最喜欢的电影名: '
while read FILM
do
    echo "是的!$FILM 是一部好电影"
done

Exécutez le script, une sortie similaire à ce qui suit:

按下 <CTRL-D> 退出
输入你最喜欢的电影名: w3cschool本教程
是的!w3cschool本教程 是一部好电影

infinite Loop

Boucle infinie syntaxe:

while :
do
    command
done

ou

while true
do
    command
done

ou

for (( ; ; ))


jusqu'à ce que la boucle

jusqu'à ce que la boucle exécute une série de commandes jusqu'à ce que la condition est vraie à l'arrêt.

jusqu'à ce que la boucle et en boucle sur l'approche opposée.

Habituellement, tout en boucle jusqu'à une meilleure circulation, mais à un certain moment - et seulement dans de rares cas, jusqu'à ce que le cycle plus utile.

jusqu'à ce que la syntaxe:

until condition
do
    command
done

Les conditions peuvent être des conditions d'essai, le test a lieu à la fin du cycle, et la boucle exécutée au moins une fois - s'il vous plaît noter ce point.


cas

Shell déclaration de cas est plus select. Vous pouvez utiliser l'instruction case correspond à une valeur avec un motif, si le match est réussi, les commandes correspondant à exécuter. format de déclaration de cas est la suivante:

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

le travail de cas, comme indiqué ci-dessus. La valeur doit être suivie d'un mot dans, chaque modèle doit être ferme entre parenthèses. La valeur peut être variable ou constante. Après avoir fait correspondre un modèle compatible avec les valeurs trouvées, au cours de laquelle toutes les commandes exécutées jusqu'à ;;.

La valeur de chaque match détecte un motif. Une fois le modèle correspondant, modèle correspondant après l'exécution de la commande correspondante plus continuer à d'autres modes. S'il n'y a pas de correspondance un motif, utilisez un astérisque * pour capturer la valeur, puis courir derrière la commande.

Le script suivant invite à 1-4, à chaque motif correspondant:

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

Entrez un contenu différent, il y aura des résultats différents, tels que:

输入 1 到 4 之间的数字:
你输入的数字为:
3
你选择了 3

Sur la boucle

Dans le cycle, et parfois il ne répond pas aux besoins forcés hors de la boucle lorsque la condition de fin de boucle, Shell utilise deux commandes pour implémenter cette fonctionnalité: break et continue.

commande break

Pause commande permet de toutes les boucles (boucle se termine l'exécution de tous de retour).

L'exemple suivant, le script dans une boucle infinie jusqu'à ce que l'utilisateur entre un nombre supérieur à 5. Pour sortir de ce cycle et revenir à l'invite du shell, utilisez la commande 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

Mise en œuvre du code ci-dessus, la sortie est:

输入 1 到 5 之间的数字:3
你输入的数字为 3!
输入 1 到 5 之间的数字:7
你输入的数字不是 1 到 5 之间的! 游戏结束

continuer

poursuivre et briser commande de commande similaire, avec une différence, il ne saute pas sur toutes les boucles, juste en dehors du cycle actuel.

Pour modifier l'exemple ci-dessus:

#!/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

Exécutez le code a été trouvé, lorsque le nombre d'entrée supérieur à 5, ce cas ne se terminera pas le cycle, l'instruction echo " Le jeu est fini!" Ne sera jamais exécutée.


esac

Grammaire et langue des différences dans le cas où la famille C est grande, il faut un esac (cas est à son tour) marquera la fin de chaque branche de cas avec une parenthèse droite, représentée par deux virgules briser.