[script sh] boucle for
Fermé
pom
-
31 juil. 2006 à 16:39
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 26 avril 2010 à 19:48
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 26 avril 2010 à 19:48
A voir également:
- Sh for
- Download instagram for pc - Télécharger - Divers Communication
- Saveaspdf.exe for office 2007 - Télécharger - Bureautique
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Idm for mac - Télécharger - Téléchargement & Transfert
- Safari for windows - Télécharger - Navigateurs
5 réponses
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
1 août 2006 à 15:50
1 août 2006 à 15:50
Je ne sais pas si l'utilitaire seq est livré sous Suse, mais sous mon Etch
man seq , donc
Johan
johan@johan:~$ for x in $(seq 1 10); do echo -n "$x "; done ; echo 1 2 3 4 5 6 7 8 9 10 johan@johan:~$ for x in $(seq -w 1 10); do echo -n "$x "; done ; echo 01 02 03 04 05 06 07 08 09 10 johan@johan:~$ for x in $(seq -w 1 3 15); do echo -n "$x "; done ; echo 01 04 07 10 13 johan@johan:~$ dpkg -S $(which seq) coreutils: /usr/bin/seq
man seq , donc
Johan
mamiemando
Messages postés
33079
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 avril 2024
7 749
Modifié par mamiemando le 26/04/2010 à 19:50
Modifié par mamiemando le 26/04/2010 à 19:50
Résumé de la solution en ligne de commandes :
Dans un script shell :
Note : on peut aussi utiliser l'opérateur backquote au lieu de $(...).
Bonne continuation
for x in $(seq 20 -2 10); do echo $x; done
Dans un script shell :
#!/bin/sh for x in $(seq 20 -2 10) do echo $x done
Note : on peut aussi utiliser l'opérateur backquote au lieu de $(...).
Bonne continuation
mamiemando
Messages postés
33079
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 avril 2024
7 749
31 juil. 2006 à 19:44
31 juil. 2006 à 19:44
Une petite recherche google donne :
http://www.bsdbooks.net/shells/scripting/fr/loops1.html
Un autre exemple disponible ici
https://www.tuteurs.ens.fr/unix/shell/boucle.html
Bonne chance
http://www.bsdbooks.net/shells/scripting/fr/loops1.html
Un autre exemple disponible ici
https://www.tuteurs.ens.fr/unix/shell/boucle.html
#!/bin/sh # Fichier "liste" for element in * do echo "$element" done
Bonne chance
Bonjour, merci pour vos réponses. J'ai écrit hier une solution mais je ne comprends pas bien mon résultat obtenu. Voici mon code :
et voici ma sortie :
et ainsi de suite...
Pourquoi le calcul ne s'arrête pas lorsque var<=10 ?
Et comment faire pour écrire "tant que var est supérieur ou égal à 10" ? J'ai essayé la formule " >= " (cf www.shellunix.com) mais ça n'a pas l'air de bien marcher...
Merci encore.
#!/bin/sh var=20 while [ var > 10 ] do echo "var = $var" var=`expr $var - 2` done
et voici ma sortie :
var = 20 var = 18 var = 16 var = 14 var = 12 var = 10 var = 8 var = 6 var = 4 var = 2 var = 0 var = -2 var = -4 var = -6 var = -8 var = -10 var = -12 var = -14 var = -16 var = -18 var = -20 var = -22
et ainsi de suite...
Pourquoi le calcul ne s'arrête pas lorsque var<=10 ?
Et comment faire pour écrire "tant que var est supérieur ou égal à 10" ? J'ai essayé la formule " >= " (cf www.shellunix.com) mais ça n'a pas l'air de bien marcher...
Merci encore.
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
1 août 2006 à 16:51
1 août 2006 à 16:51
Essaye plutôt ceci:
C'est l'opérateur -gt qu'il faut utiliser.
Ne pas oublier le $ devant le nom de la variable (hors assignation)
extrait de man [
INTEGER1 -eq INTEGER2
INTEGER1 is equal to INTEGER2
INTEGER1 -ge INTEGER2
INTEGER1 is greater than or equal to INTEGER2
Johan
johan@johan:~$ var=25 ;while [ $var -gt 10 ]; do echo "var = $var"; var=`expr $var - 2`; done var = 25 var = 23 var = 21 var = 19 var = 17 var = 15 var = 13 var = 11
C'est l'opérateur -gt qu'il faut utiliser.
Ne pas oublier le $ devant le nom de la variable (hors assignation)
extrait de man [
INTEGER1 -eq INTEGER2
INTEGER1 is equal to INTEGER2
INTEGER1 -ge INTEGER2
INTEGER1 is greater than or equal to INTEGER2
Johan
pom
>
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
2 août 2006 à 09:45
2 août 2006 à 09:45
OK, effectivement, le code suivante marche correctement
Merci
#!/bin/sh var=20 while [ $var -ge 10 ] do echo "var = $var" var=`expr $var - 2` done
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
31 juil. 2006 à 22:34
31 juil. 2006 à 22:34
Salut;
#!/bin/bash i=20 until [ ! "$i" -ge "10" ] do echo $i sleep 1 i=$(expr $i - 2) done;-))
1 août 2006 à 16:34
seq je ne savais pas. Merci.
lami20j
1 août 2006 à 21:25
Itou, merci ;-))
2 août 2006 à 09:49