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 :

Echo variables imbriquées


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Par défaut Echo variables imbriquées
    Bonjour,

    Ce matin je me prends la tête pour réussir a faire un echo correct sur des variables imbriquées dont une est incrémentée à chaque passage de boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    cpt=0
    command=`echo $1`
    for Arg in $command
    do 
    ((cpt=cpt+1))
    Arg$cpt=`echo $Arg`
    echo ${Arg${cpt}}
    done
    Malheureusement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ./test.ksh "mov MQRSEH12:APPL.STD.APPCODE MQRSEH22:APPL.STD.APPCODE where('string') {limit}=123"
    ./test.ksh[30]: Arg1=mov:  not found.
    mov1
    ./test.ksh[30]: Arg2=MQRSEH12:APPL.STD.APPCODE:  not found.
    MQRSEH12:APPL.STD.APPCODE2
    ./test.ksh[30]: Arg3=MQRSEH22:APPL.STD.APPCODE:  not found.
    MQRSEH22:APPL.STD.APPCODE3
    ./test.ksh[30]: Arg4=where('string'):  not found.
    where('string')4
    ./test.ksh[30]: Arg5={limit}=123:  not found.
    {limit}=1235
    Je ne sais pas si vous me suivez, mais c'est juste histoire de compter le nombre d'arguments pour les différentes fonctions qui suivront...

    Quelqu'un a t-il une solution ? J'ai déjà pas mal chercher sur google mais je ne trouve rien de probant et le peu de solutions proposées ne fonctionnent pas

    Merci d'avance pour votre aide

    Alex

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour,

    les echo sont inutiles dans les affectations de variables.

    ton souci devrait se régler en utilisant un tableau.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour

    Si j'execute ./tonscript.ksh mes arguments, je vais avoir un problème car "mes" et "arguments" seront séparés en 2 tours de boucle.

  4. #4
    Membre expérimenté
    Avatar de demkada
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Août 2011
    Messages : 79
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par alexmirage Voir le message
    Je ne sais pas si vous me suivez, mais c'est juste histoire de compter le nombre d'arguments pour les différentes fonctions qui suivront...
    Bonjour,
    Si tu souhaites compter le nombre d'argument, pourquoi ne pas utiliser la variable $#,
    ou alors tu peux utiliser ton code en utilisant le tableau des arguments $@ ou $* de la sorte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    echo "Le nombre d'argument est $#"
    echo "Sinon Pourquoi ne pas utiliser le tableau des argument \$@"
    cpt=0
    for Arg in $@
    do
    cpt=$((cpt+1))
    echo "Arg$cpt = $Arg"
    done
    Mais par contre, je ne suis pas sûr de comprendre ce que tu veux faire!
    Car si tu fais , tu n'aura accès qu'au premier argument à chaque fois et ça sert à quoi de faire une boucle for sur un mot?
    Peux tu meiux expliquer ton intention stp au cas ou le code que je t'ai donné ne correspondrai pas à tes recherches

  5. #5
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Ou alors, sans tableaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [idriss@MacBookPro ~/test]$ cat test.sh 
    #!/bin/bash
     
    for (( cpt=0 ; cpt<=$# ; cpt++ )); do
        echo "Arg$cpt = ${!cpt}"
    done
    [idriss@MacBookPro ~/test]$ ./test.sh 
    Arg0 = ./test.sh
    [idriss@MacBookPro ~/test]$ ./test.sh arg1 arg2
    Arg0 = ./test.sh
    Arg1 = arg1
    Arg2 = arg2
    On peux adapter si on veux commencer le premier argument à 0 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [idriss@MacBookPro ~/test]$ cat test.sh 
    #!/bin/bash
     
    for (( cpt=0 ; cpt<$# ; cpt++ )); do
        cpt2=$((cpt+1))
        echo "Arg$cpt = ${!cpt2}"
    done
    [idriss@MacBookPro ~/test]$ ./test.sh arg1 arg2
    Arg0 = arg1
    Arg1 = arg2
    Cordialement,
    Idriss

Discussions similaires

  1. Deux variables imbriquées syntaxe
    Par olimann dans le forum jQuery
    Réponses: 5
    Dernier message: 05/11/2013, 08h43
  2. [Batch] Variable imbriquée dans for imbriqué
    Par el_fabou29 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 06/05/2013, 08h47
  3. 2 Div (1fixe, 1 variable) imbriqué dans un div
    Par fabou3377 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 15/02/2010, 13h54
  4. [XSL] For each avec variables imbriquées
    Par Wells dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 13/05/2008, 19h28
  5. Réponses: 1
    Dernier message: 25/09/2005, 14h29

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