Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

pour : Forme de coquille traditionnelle

L'ouverture a pour la syntaxe de la commande est :

pour variable [dans gentils] ; faire

commandes

fait

variable est le nom d'une variable qui s'incrémentera lors de l'exécution de la boucle, gentils est une liste facultative d'éléments qui seront assignés séquentiellement à variable et commandes sont les commandes qui doivent être exécutées à chaque itération de la boucle.

Le pour La commande est utile sur la ligne de commande. Nous pouvons facilement démontrer comment cela fonctionne :



[moi@linuxbox ~]$ pour i dans ABCD ; faire écho $i; terminé

A B C D

[moi@linuxbox ~]$ pour i dans ABCD ; faire écho $i; terminé

A B C D


Dans cet exemple, pour se voit attribuer une liste de quatre mots : « A », « B », « C » et « D ». Avec une liste de quatre mots, la boucle est exécutée quatre fois. A chaque exécution de la boucle, un mot est affecté à la variable i. A l'intérieur de la boucle, nous avons un echo commande qui affiche la valeur de i pour montrer le devoir. Comme avec le tout en et jusqu'au boucles, le fait mot-clé ferme la boucle.


La fonctionnalité vraiment puissante de pour est le nombre de façons intéressantes de créer la liste de mots. Par exemple, via l'expansion de l'accolade :



[moi@linuxbox ~]$ pour i dans {A..D} ; faire écho $i; terminé

A B C D

[moi@linuxbox ~]$ pour i dans {A..D} ; faire écho $i; terminé

A B C D


ou extension du chemin d'accès :



[moi@linuxbox ~]$ pour i dans les distributions*.txt ; faire écho $i; terminé

distros-by-date.txt dates-distros.txt noms-clés-distros.txt clés-distros-vernums.txt noms-distros.txt distros.txt

distributions-vernums.txt distributions-versions.txt

[moi@linuxbox ~]$ pour i dans les distributions*.txt ; faire écho $i; terminé

distros-by-date.txt dates-distros.txt noms-clés-distros.txt clés-distros-vernums.txt noms-distros.txt distros.txt

distributions-vernums.txt distributions-versions.txt


ou substitution de commande :



#! / Bin / bash

# mot-long : recherche la chaîne la plus longue dans un fichier while [[ -n $1 ]]; faire

si [[ -r $1 ]] ; alors max_word= max_len=0

pour i dans $(chaînes $1); do len=$(echo -n $i | wc -c)

if (( longueur > longueur_max )); alors max_len=$len max_word=$i

fi

fait

echo "$1 : '$max_word' (caractères $max_len)"

décalage de fi

fait

#! / Bin / bash

# mot-long : recherche la chaîne la plus longue dans un fichier while [[ -n $1 ]]; faire

si [[ -r $1 ]] ; alors max_word= max_len=0

pour i dans $(chaînes $1); do len=$(echo -n $i | wc -c)

if (( longueur > longueur_max )); alors max_len=$len max_word=$i

fi

fait

echo "$1 : '$max_word' (caractères $max_len)"

décalage de fi

fait

pour : Forme de coquille traditionnelle


Dans cet exemple, nous recherchons la chaîne la plus longue trouvée dans un fichier. Lorsqu'on lui donne un ou plusieurs noms de fichiers sur la ligne de commande, ce programme utilise le instruments à cordes programme (qui est inclus dans le package GNU binutils) pour générer une liste de « mots » de texte lisibles dans chaque fichier. Les pour loop traite chaque mot à tour de rôle et détermine si le mot actuel est le plus long trouvé jusqu'à présent. Lorsque la boucle se termine, le mot le plus long est affiché.

Si l'optionnel in gentils partie de la pour la commande est omise, pour par défaut le traitement des paramètres de position. Nous allons modifier notre mot le plus long script pour utiliser cette méthode :



#! / Bin / bash

# mot-long2 : recherche la chaîne la plus longue dans un fichier pour i ; faire

si [[ -r $i ]] ; alors max_word= max_len=0

pour j dans $(chaînes $i); do len=$(echo -n $j | wc -c)

if (( longueur > longueur_max )); alors max_len=$len max_word=$j

fi

fait

echo "$i: '$max_word' (caractères $max_len)"

fi fait

#! / Bin / bash

# mot-long2 : recherche la chaîne la plus longue dans un fichier pour i ; faire

si [[ -r $i ]] ; alors max_word= max_len=0

pour j dans $(chaînes $i); do len=$(echo -n $j | wc -c)

if (( longueur > longueur_max )); alors max_len=$len max_word=$j

fi

fait

echo "$i: '$max_word' (caractères $max_len)"

fi fait


Comme nous pouvons le voir, nous avons modifié la boucle la plus externe pour utiliser pour au lieu de tout en. En omettant la liste de mots dans le pour commande, les paramètres positionnels sont utilisés à la place. Dans la boucle, les instances précédentes de la variable i ont été remplacés par la variable j. L'utilisation de décalage a également été éliminé.


Pourquoi je?

Vous avez peut-être remarqué que la variable i a été choisi pour chacun des pour exemples de boucle ci-dessus. Pourquoi? Aucune raison précise en fait, à part la tradition. La variable utilisée avec pour peut être n'importe quelle variable valide, mais i est la plus courante, suivie de j et k.



La base de cette tradition vient du langage de programmation Fortran. En Fortran, les variables non déclarées commençant par les lettres I, J, K, L et M sont automatiquement saisies comme des entiers, tandis que les variables commençant par n'importe quelle autre lettre sont saisies comme réelles (nombres avec fractions décimales). Ce comportement a conduit les programmeurs à utiliser les variables I, J et K pour les variables de boucle, car il était moins difficile de les utiliser lorsqu'une variable temporaire (comme le sont souvent les variables de boucle) était nécessaire.

Cela a également conduit au mot d'esprit suivant basé sur Fortran : « DIEU est réel, à moins qu'il ne soit déclaré entier. »


Meilleur système d'exploitation Cloud Computing chez OnWorks :