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.