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 :

Utilisation d'une variable résultant d'une concaténation d'une chaine et d'une variable


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Par défaut Utilisation d'une variable résultant d'une concaténation d'une chaine et d'une variable
    Bonjour,

    Comme écrit dans le titre je voudrais utiliser le résultat d'une variable créé à partir de la concaténation d'une chaine de caractère et d'une variable.

    Voici le cas d'utilisation que j'aimerai réaliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # Paramétrage
    fich1="753256/olkiuj"
    fich2="159852/tgfred"
    fich3="478526/kijuyh"
    fich4="852469/olkuiy"
    fich5="258746/hfgjlo"
     
    # Action
    for id in `seq 1 5`;
    do 
    	cmd ./dossier/${fich$id}.ext	# va chercher la commande fich#  et non la variable
    	cmd ./dossier/$fich$id.ext	# va chercher la variable fich qui n'existe pas donc faux
    	cmd ./dossier/$(fich$id).ext	# peut-être 
    	cmd ./dossier/$"fich$id".ext	# peut-être 
    done
    Note : le .ext c'est pour l’extension du fichier
    Quelle commande va pouvoir fonctionner sur les fichiers placés en paramètre ?
    C'est peut être une méthode barbare mais j'aimerai vraiment que ça soit aussi simple que ça.

    J'ai vu le post : http://www.developpez.net/forums/d13...dont-nom-varie
    où le même cas de figure arrive, mais j'aimerai pouvoir ne pas utiliser de tableau.

    Merci pour votre aide !

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Billets dans le blog
    1
    Par défaut
    as tu essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd ./dossier/${fich}${id}.ext
    ?

    Edit : j'ai lu de travers et repondu de meme
    +1 pour Al1

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    et comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd ./dossier/$(eval "echo \${fich${id}}").ext
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Par défaut
    Pour :
    Citation Envoyé par Jean.Cri1 Voir le message
    as tu essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd ./dossier/${fich}${id}.ext
    ?
    Dans ce que tu proposes, tu inclues une variable nommée fich
    Mais cette variable n’existe pas, donc la boucle va sortir les commandes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cmd ./dossier/1.ext
    cmd ./dossier/2.ext
    cmd ./dossier/3.ext
    cmd ./dossier/4.ext
    cmd ./dossier/5.ext
    Arrêtez moi si je me trompe complétement, je suis vraiment novice.
    ----------------------------------------------------------

    Sinon pour la réponse de al1_24
    Citation Envoyé par al1_24 Voir le message
    et comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd ./dossier/$(eval "echo \${fich${id}}").ext
    C'est surement ce qu'il faut, je test ça dés que j'aurai un environnement Linux à porté de main.

    Merci pour vos réponses rapides, je vous tiens au courant.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    Citation Envoyé par Yanar
    j'aimerai pouvoir ne pas uiliser de tableau.
    et pourquoi s'il vous plaît ?

    c'est très bien les tableaux.
    c'est moderne les tableaux.
    tout le monde devrait utiliser des tableaux.

    patron ! des tableaux pour tous !
    et pour moi, un tableau associatif.

    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    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 347
    Par défaut
    Et pour les allergiques de "eval", il y a la solution suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd ./dossier/`set|grep "^fich$id"|cut -d= -f2`.ext


    Cordialement.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Par défaut
    Deux solutions testés et fonctionnelles, les voici :

    Citation Envoyé par al1_24 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd ./dossier/$(eval "echo \${fich${id}}").ext
    Citation Envoyé par disedorgue Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd ./dossier/`set|grep "^fich$id"|cut -d= -f2`.ext
    Merci pour vos réponses, pour moi la question est résolue même si il reste la piste du tableau qui apparemment mériterait d’être développé.
    Charge à ceux qui le pourront, de la faire. ... ou pas

    A bientôt !

  8. #8
    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
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Et pour les allergiques de "eval", il y a la solution suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd ./dossier/`set|grep "^fich$id"|cut -d= -f2`.ext
    [mega_chipotage]
    En espérant qu'il n'y a pas un fou qui a pondu une variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto=$(echo 'suite_a_la_ligne\nfich3=meme_pas_une_vraie_variable')
    [/mega_chipotage]


    .
    Idem!

Discussions similaires

  1. [JSTL] Interpréter une variable qui est la concaténation de 2 variables
    Par JimJames06 dans le forum Taglibs
    Réponses: 12
    Dernier message: 02/07/2014, 08h53
  2. Réponses: 2
    Dernier message: 01/12/2008, 09h59
  3. Réponses: 3
    Dernier message: 12/06/2006, 11h18
  4. Concaténation de deux integer pour former une clé primaire
    Par stoukou dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 08/09/2005, 10h34
  5. Concaténer des lignes d'enregistrements dans une colonne
    Par dany13 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 08/07/2005, 21h56

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