Augmentation de bash boucle en montant
Je sais comment faire une boucle en bash qui augmente de un à chaque fois, mais disons que j'ai une plage de 1 à 773 et je tiens à la sortie d'une gamme à partir d'une boucle en sorte que je reçois deux variables à chaque itération. La première sera la 1 et la seconde sera-dire 19. Dans la deuxième itération de la première serait de 20 et le second les 39.
Ive été de jouer avec quelque chose comme:
for start in {1..773}
do
start=$(($start+20))
end=$(($start+20))
echo $start ##
echo $end
done
Boucle souhaitée résultat:
1. $start = 1 and $end = 19
2. $start = 20 and $end = 39
3. $start = 40 and $end = 59
etc
Mais il n'est pas juste. Je veux à la sortie de ces deux variables pour une série de scripts pour faire de la R de courir plus vite, si non bash (par exemple, awk) les solutions sont plus faciles, alors que c'est trop cool si simple > envoyer le fichier.
Merci!
- La boucle n'est pas compatible avec les stars. 1 devient 20 (+19), puis 20 devient 40 (+20). Ce n'est pas possible sur une boucle continue.
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez imprimer des plages au sein 773, vous pouvez le faire comme ceci
Sortie
vos exigences ne sont pas parfaitement claires, mais vous sont re-utiliser des noms de variables.
si je fais ceci:
- je obtenir quelque chose qui ressemble à votre résultat souhaité. observer la façon dont j'ai renommé la variable de boucle de commencer à indexer.
PS: si vous voulez changer la taille du pas (un.k.un. "incrémenter") dans votre boucle, il suffit de faire comme ceci:
Cela sera incrémenté par pas de 2, vous souhaitez utiliser un 20 ici. Qui vous donnent
1, 21, 41, ...
comme valeur. Voir http://www.cyberciti.biz/faq/bash-for-loop/ pour plus de détails.bash
version première. Soutien pour{x..y..z}
a été ajouté dans la version 4.0 (éventuellement 4.1; le changelog n'en parle pas et je n'ai pas de 4.0 exemple pour vérifier).Vous pouvez utiliser
seq
commandeL'utilisation de
seq
est:À moins que je suis absent quelque chose que vous pouvez tout simplement faire:
De SORTIE:
C'est une façon de le faire grâce à la cohérence des sorties:
De sortie:
Ou
De sortie:
L'autre:
De sortie:
De cette façon, vous pouvez avoir deux variables.
Personne n'a suggéré une
while
boucleProduit
Bien sûr, la boucle while peut être écrite comme une boucle for:
Voici une façon de le faire:
Il est fondamentalement juste une simple boucle for.