2010-04-18 4 views
1

Quel est le nom et la syntaxe de la construction ((..)) dans l'exemple ci-dessous?cycles numériques dans le shell

for ((i=1;i<10;i++)) do echo $i; done 

il a la variable étrange i
où sont d'autres constructions pour le vélo numérique dans des coquilles?

Répondre

2

Dans la section §3.2.4.2 du 'Manuel de référence Bash' (4.0), la notation '((...))' est classé comme une expression arithmétique. Il est étroitement lié à la notation '$((...))' décrite au § 3.5.5 comme expansion arithmétique. Et §3.2.4.1 'bouclage Constructs dit:

Une autre forme de la commande for est également supporté:

for ((expr1 ; expr2 ; expr3)) ; do commands ; done 

d'abord, le expr1 d'expression arithmétique est évaluée en fonction de la les règles décrites ci-dessous (voir la section 6.5 [Arithmétique du shell], page 78). L'expression arithmétique expression expr2 est ensuite évaluée plusieurs fois jusqu'à ce qu'elle soit évaluée à zéro. Chaque heure exprime une valeur non nulle, les commandes sont exécutées et l'expression arithmétique expression expr3 est évaluée. Si une expression est omise, elle se comporte comme si elle est évaluée à 1. La valeur de retour est l'état de sortie de la dernière commande de la liste exécutée, ou false si l'une des expressions n'est pas valide.

1

bash(1) page man, GRAMMAIRE section, Commandes composées paragraphe. Les autres choix pour les boucles numériques sont while et until avec un incrément manuel.

4

Vous pouvez vérifier le Advanced Bash Scripting Guide's section on Loops pour plus d'exemples de constructions en boucle en plus du C-style for loop que vous avez répertorié.

Essayez aussi:

$ for i in {1..5}; do echo $i; done # range argument 
1 
2 
3 
4 
5 
$ for i in `seq 1 5`; do echo $i; done # iterate over seq command 
1 
2 
3 
4 
5