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 :

Boucle for imbriquée


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 907
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 907
    Points : 411
    Points
    411
    Par défaut Boucle for imbriquée
    Bonjour à tous,

    j'ai un petit souci sur des boucles imbriquées.
    J'aimerais que ma 2ème boucle for ne lise qu'une ligne du fichier à chaque passage de première boucle for.
    Dans mon code, la deuxième boucle for lis toutes les lignes de la variables : $listress dès le premier passage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    for i in $listchaine
    	do
    		echo 'chaîne en cours d execution '$i
    		for j in $listress
    		do
    			chaineblk=$(ps -edf|grep MS|grep "$j")
    			echo 'elle bloque les chaînes suivantes '$chaineblk
    		done 
    	done 
    exit

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 382
    Points
    19 382
    Par défaut
    Bonjour,

    ça pas clair.

    inverse les boucles ?

    montre-nous le fonctionnement actuel, et le fonctionnement souhaité.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    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 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par sam01 Voir le message
    J'aimerais que ma 2ème boucle for ne lise qu'une ligne du fichier à chaque passage de première boucle for.
    Je confirme: pas clair...

    Le code montré ne fait référence à aucune lecture de fichier: de quel fichier parles-tu?

    Voudrais-tu faire une boucle où, à chaque itération, "i" avancerait dans "$listchaine" en même temps que "j" avancerait dans "$listress" (à supposer qu'elles ont la même longueur)?

    C'est-à-dire quelque chose qui ressemblerait à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Pour i et j parcourant parallèlement $listchaine et $listress, 
      faire quelque chose avec i et j, 
    fin-pour

  4. #4
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 907
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 907
    Points : 411
    Points
    411
    Par défaut
    Salut jack-ft, oui c'est exactement ça que souhaite faire.
    Ce sont des variables qui contiennent le même nombre de lignes chacun mais pas la même valeur.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    Salut,

    ce genre de chose ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    liste_a=(a b c d e)
    liste_b=(1 2 3 4 5)
     
    for ((i=0; i <${#liste_a[@]}; i++))
    do
      echo "Les 1er items des listes sont : ${liste_a[${i}]} - ${liste_b[${i}]}"
    done
     
    Les 1er items des listes sont : a - 1
    Les 1er items des listes sont : b - 2
    Les 1er items des listes sont : c - 3
    Les 1er items des listes sont : d - 4
    Les 1er items des listes sont : e - 5
    Sous Kubuntu 20.04

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 382
    Points
    19 382
    Par défaut
    on peut plus court, en bouclant sur la liste des indices :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in ${!tableau_1[@]}; do echo "${tableau_1[i]} $tableau_2[i]}"; done
    c'est peut-être plus sûr, si les tableaux sont indexés de la même manière mais avec des trous !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ar=( [1]=a [3]=b [5]=c d e )
    for i in ${!ar[@]}; do echo $i ${ar[i]}; done
    1 a
    3 b
    5 c
    6 d
    7 e
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    Merci, je ne rappelais pas cette façon de faire...

    J'avais en tête ça avec le ! :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    a=1
    b=a
    echo "${!b}"
    => 1
    En plus je l'avais marqué dans mes notes... arf comme quoi il faudrait que les relise de temps en temps
    Sous Kubuntu 20.04

Discussions similaires

  1. Boucles for imbriquées
    Par The eye dans le forum ASP
    Réponses: 2
    Dernier message: 19/07/2007, 12h00
  2. Boucle for imbriqué
    Par boula dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 18/07/2007, 12h42
  3. 2 boucles for imbriquées
    Par karimphp dans le forum Langage
    Réponses: 8
    Dernier message: 02/12/2006, 14h46
  4. Batch - Deux boucle For imbriquées plus un FC
    Par Lorponos dans le forum Windows
    Réponses: 17
    Dernier message: 27/07/2006, 14h58
  5. [Syntaxe] Boucle For imbriquées en 1.5
    Par Piolet dans le forum Langage
    Réponses: 5
    Dernier message: 09/01/2005, 00h49

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