IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Double boucle for avec incrémentation


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Points : 137
    Points
    137
    Par défaut Double boucle for avec incrémentation
    Bonjour,

    Avec un script shell j'aimerai généré la liste suivante en une seule ligne de commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for ((a=1; a<=4 ; a++));do  echo "--outfile Test1-part$a.txt" ; done;
    --outfile Test1-part1.txt
    --outfile Test1-part2.txt
    --outfile Test1-part3.txt
    --outfile Test1-part4.txt
    for ((a=1; a<=4 ; a++));do  echo "--outfile Test2-part$a.txt" ; done;
    --outfile Test2-part1.txt
    --outfile Test2-part2.txt
    --outfile Test2-part3.txt
    --outfile Test2-part4.txt
    Pour l'instant j'utilise la ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ((a=1; a<=4 ; a++));do  echo "--outfile Test2-part$a.txt" ; done;
    Elle est limitée à l'incrémentation du chiffre qui est après le terme "part", mais comment incrémenter le chiffre qui est après "Test".

    D'avance Merci ....

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ i=1;while [ "${i}" -le 2 ];do for ((a=1; a<=4 ; a++));do  echo "Test${i}-part${a}";done;((i++));done
    Test1-part1
    Test1-part2
    Test1-part3
    Test1-part4
    Test2-part1
    Test2-part2
    Test2-part3
    Test2-part4

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Points : 5 849
    Points
    5 849
    Par défaut
    Ben, il suffit de faire pareil!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for ((numTest=1; numTest<=2; numTest++)); do
      for ((numPart=1; numPart<=4 ; numPart++))
      do echo "--outfile Test${numTest}-part${numPart}.txt"
      done
    done
    --outfile Test1-part1.txt
    --outfile Test1-part2.txt
    --outfile Test1-part3.txt
    --outfile Test1-part4.txt
    --outfile Test2-part1.txt
    --outfile Test2-part2.txt
    --outfile Test2-part3.txt
    --outfile Test2-part4.txt
    Après, pour le mettre sur une seule ligne, il suffit de mettre des ';' aux bons endroits, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for ((numTest=1; numTest<=2; numTest++)); do for ((numPart=1; numPart<=4 ; numPart++)); do echo "--outfile Test${numTest}-part${numPart}.txt"; done; done
    --outfile Test1-part1.txt
    --outfile Test1-part2.txt
    --outfile Test1-part3.txt
    --outfile Test1-part4.txt
    --outfile Test2-part1.txt
    --outfile Test2-part2.txt
    --outfile Test2-part3.txt
    --outfile Test2-part4.txt

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 302
    Points : 12 800
    Points
    12 800
    Par défaut
    Bonjour,

    Allez, en une boucle et sans calcul:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ for i in $(seq 1 2) ;do seq 1 4 | xargs -Inb1 echo "--outfile Test${i}-partnb1.txt";done
    --outfile Test1-part1.txt
    --outfile Test1-part2.txt
    --outfile Test1-part3.txt
    --outfile Test1-part4.txt
    --outfile Test2-part1.txt
    --outfile Test2-part2.txt
    --outfile Test2-part3.txt
    --outfile Test2-part4.txt


    Et une autre version avec boucle implicite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ seq 1 2 | xargs -Inb1 sh -c 'seq 1 4 | xargs -Inb2 echo "--outfile Testnb1-partnb2.txt"'
    --outfile Test1-part1.txt
    --outfile Test1-part2.txt
    --outfile Test1-part3.txt
    --outfile Test1-part4.txt
    --outfile Test2-part1.txt
    --outfile Test2-part2.txt
    --outfile Test2-part3.txt
    --outfile Test2-part4.txt
    Cordialement.

Discussions similaires

  1. Boucle for avec incrément supérieur à 1
    Par bremer dans le forum Langage
    Réponses: 19
    Dernier message: 22/04/2024, 12h41
  2. Boucle for avec références dépendant de l'incrément
    Par RQuet dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/10/2013, 16h20
  3. Boucle for avec incrémentation de variable en shell
    Par Ariania dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 09/08/2012, 11h27
  4. [Smarty] Boucle FOR avec incrémentation
    Par HwRZxLc4 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/07/2010, 20h31
  5. Réponses: 2
    Dernier message: 14/04/2010, 18h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo