Bash Range : comment itérer sur les séquences générées sur le shell

Bash Range How Iterate Over Sequences Generated Shell



Vous pouvez itérer la séquence de nombres dans bash de deux manières. L'une consiste à utiliser seq commande et une autre consiste à spécifier la plage dans la boucle for. Dans seq commande, la séquence commence à partir d'un, le nombre augmente d'un à chaque étape et imprime chaque nombre dans chaque ligne jusqu'à la limite supérieure par défaut. Si le nombre commence à partir de la limite supérieure, il décrémente de un à chaque étape. Normalement, tous les nombres sont interprétés comme des virgules flottantes, mais si la séquence commence à partir d'un entier, la liste des entiers décimaux s'imprimera. Si la commande seq peut s'exécuter avec succès, elle renvoie 0, sinon elle renvoie un nombre différent de zéro. Vous pouvez également itérer la séquence de nombres à l'aide de la boucle for with range. Les deux seq La commande et la boucle for avec plage sont illustrées dans ce didacticiel à l'aide d'exemples.

Les options de la commande seq :

Vous pouvez utiliser seq commande en utilisant les options suivantes.







-dans

Cette option est utilisée pour remplir les nombres avec des zéros non significatifs pour imprimer tous les nombres avec la même largeur.



-f format

Cette option est utilisée pour imprimer un numéro avec un format particulier. Les nombres flottants peuvent être formatés en utilisant %f, %g et %e comme caractères de conversion. %g est utilisé par défaut.



-s chaîne

Cette option est utilisée pour séparer les nombres avec une chaîne. La valeur par défaut est la nouvelle ligne (' ').





Exemples de commande seq :

Vous pouvez appliquer la commande seq de trois manières. Vous ne pouvez utiliser que la limite supérieure ou la limite supérieure et inférieure ou la limite supérieure et inférieure avec une valeur d'incrément ou de décrément de chaque étape. Différentes utilisations de la commande seq avec des options sont illustrées dans les exemples suivants.

Exemple-1 : commande seq sans option

Lorsque seule la limite supérieure est utilisée, le nombre commencera à partir de 1 et augmentera de un à chaque étape. La commande suivante imprimera le nombre de 1 à 4.



$seq 4

Sortir:

Lorsque les deux valeurs sont utilisées avec la commande seq, la première valeur sera utilisée comme numéro de départ et la deuxième valeur sera utilisée comme numéro de fin. La commande suivante imprimera le nombre de 7 à 15.

$seq 7 quinze

Sortir:

Lorsque vous utiliserez trois valeurs avec la commande seq, la deuxième valeur sera utilisée comme valeur d'incrément ou de décrément pour chaque étape. Pour la commande suivante, le numéro de départ est 10, le numéro de fin est 1 et chaque étape sera comptée en décrémentant 2.

$seq dix -2 1

Sortir:

Exemple-2 : seq avec l'option –w

La commande suivante imprimera la sortie en ajoutant un zéro non significatif pour le nombre de 1 à 9.

$seq -dans0110

Sortir:

Exemple-3 : seq avec l'option –s

La commande suivante utilise - comme séparateur pour chaque numéro de séquence. La séquence de nombres s'imprimera en ajoutant - comme séparateur.

$seq -s-8

Sortir:

Exemple-4 : seq avec l'option -f

La commande suivante imprimera 10 valeurs de date à partir de 1. Ici, l'option %g est utilisée pour ajouter un numéro de séquence avec une autre valeur de chaîne.

$seq -F '%g/04/2018' dix

sortir:

Gamme Bash

La commande suivante est utilisée pour générer la séquence de nombres à virgule flottante à l'aide de %f . Ici, le nombre commencera à partir de 3 et augmentera de 0,8 à chaque étape et le dernier nombre sera inférieur ou égal à 6.

$seq -F '%F' 3 0,8 6

Sortir:

Exemple-5 : Écrivez la séquence dans un fichier

Si vous souhaitez enregistrer la séquence de nombres dans un fichier sans imprimer dans la console, vous pouvez utiliser les commandes suivantes. La première commande imprimera les nombres dans un fichier nommé seq.txt . Le nombre sera généré de 5 à 20 et incrémenté de 10 à chaque étape. La deuxième commande permet de visualiser le contenu de seq.txt déposer.

$ seq 5 10 20 | chat > ​​seq.txt
$ cat seq.txt

Sortir:

Exemple-6 : Utilisation de seq dans la boucle for

Supposons que vous souhaitiez créer des fichiers nommés fn1 à fn10 en utilisant la boucle for avec seq. Créez un fichier nommé sq1.bash et ajoutez le code suivant. La boucle For sera itérée 10 fois à l'aide de la commande seq et créera 10 fichiers dans la séquence fn1, fn2,fn3…..fn10.

#!/bin/bash
pourjedans ``seq dix``
faire
toucherfn.$i
terminé

Sortir:

Exécutez les commandes suivantes pour exécuter le code du fichier bash et vérifier que les fichiers sont créés ou non.

$frappersq1.bash
$ls

Exemples de boucle for avec plage :

Exemple-7 : Boucle for avec plage

L'alternative de la commande seq est range. Vous pouvez utiliser range in for loop pour générer une séquence de nombres comme seq. Écrivez le code suivant dans un fichier bash nommé sq2.bash . La boucle sera itérée 5 fois et imprimera la racine carrée de chaque nombre à chaque étape.

#!/bin/bash
pourmdans {1..5}
faire
((résultat=n*m))
chassèrent $n carré=$résultat
terminé

Sortir:

Exécutez la commande pour exécuter le script du fichier.

$frappersq2.bash

Exemple-8 : Boucle for avec plage et valeur d'incrément

Par défaut, le nombre est incrémenté de un à chaque pas de la plage comme seq. Vous pouvez également modifier la valeur d'incrément dans la plage. Écrivez le code suivant dans un fichier bash nommé sq3.bash . La boucle for du script sera itérée 5 fois, chaque étape est incrémentée de 2 et imprime tous les nombres impairs compris entre 1 et 10.

#!/bin/bash
chassèrent 'tous les nombres impairs de 1 à 10 sont'
pourjedans {1..dix..2}
faire
chassèrent $i;
terminé

Sortir:

Exécutez la commande pour exécuter le script du fichier.

$frappersq3.bash

Si vous souhaitez travailler avec la séquence de nombres, vous pouvez utiliser l'une des options présentées dans ce didacticiel. Après avoir terminé ce didacticiel, vous pourrez utiliser la commande seq et la boucle for avec range plus efficacement dans votre script bash.