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 :

Variable mal interprétée


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Variable mal interprétée
    En fait j'ai un autre problème similaire

    mon batch ressemble à ça (j'ai enlevé des lignes)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cpts="leon leo toto"
    for cpt in $cpts
    do
        sudo pdbedit -h '\\LInuxMate\$cpt' -D 'F:' -p '\\LinuxMate\profile\$cpt' $cpt
    done
    Les 2 $cpt sont mals interprété dans les '.... '

  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 383
    Points
    19 383
    Par défaut
    Bonjour,

    les variables ne sont pas interprétées entre apostrophes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ var="bla bla"
    $ echo '$var'
    $var
    $ echo "$var"
    bla bla
    et
    il faut toujours mettre les développements de variables entre guillemets. TOUJOURS.
    à moins de savoir pourquoi.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci mais il me semble que ma commande n'accepte que les '....'

    j'ai testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo pbedit -h "\\linuxMate\"$cpt .....
    ça ne marche pas plus

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    je m'en tire avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    rep1='\\LinuxMate\'$cpt
    rep2='\\LinuxMate\profiles\'$cpt
    sudo pdbedit -h $rep1 -D 'F:' -p $rep2 $cpt
    mais en une ligne ça ne passe pas

  5. #5
    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 383
    Points
    19 383
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cpts="leon leo toto"
    for cpt in $cpts
    do
        sudo pdbedit -h "\\\LInuxMate\$cpt" -D 'F:' -p "\\\LinuxMate\profile\$cpt" "$cpt"
    done
    l'antislash (\) protège certains caractères spéciaux (l'antislash en est un).
    la protection disparaît au profit du caractère protégé, c'est pourquoi, dans la commande, il faut en ajouter un.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse mais cela ne marche pas, voici le résultat de pdbedit, on y retrouve $cpt

    Nom : temp.jpg
Affichages : 82
Taille : 38,5 Ko

    il faut mettre un autre '\' avant les $cpt

  7. #7
    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 383
    Points
    19 383
    Par défaut
    oops. j'aurais dû le voir : la coloration syntaxique du forum le montre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        sudo pdbedit -h "\\\LInuxMate\\$cpt" -D 'F:' -p "\\\LinuxMate\profile\\$cpt" "$cpt"
    le dollar est protégé, il faut aussi protégé l'antislash qui le précéde.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci ça marche.

  9. #9
    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 amiga56 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        sudo pdbedit -h '\\LInuxMate\$cpt' -D 'F:' -p '\\LinuxMate\profile\$cpt' $cpt
    Les 2 $cpt sont mals interprété dans les '.... '
    Avec tous ces backslash à conserver tels quels, j'aurais personnellement opté pour un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        sudo pdbedit -h '\\LInuxMate\'"$cpt" -D 'F:' -p '\\LinuxMate\profile\'"$cpt" "$cpt"
    voire, pour mieux séparer le code et les données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    racine='\\LInuxMate\'
    profile=$racine'profile\'
     
    cpts="leon leo toto"
     
    for cpt in $cpts
    do
        sudo pdbedit -h "$racine$cpt" -D 'F:' -p "$profile$cpt" "$cpt"
    done
    D'ailleurs, comme ça, on voit plus vite la cohérence entre LInux et Linux...

    [sarcasm]
    Après, s'il y en a qui préfèrent sudo pdbedit -h "${racine}${cpt}" -D 'F:' -p "${profile}${cpt}" "${cpt}", ça me convient tout à fait !

    [/sarcasm]

  10. #10
    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 383
    Points
    19 383
    Par défaut
    bouge pas, j'arrive !

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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [HTML] caracteres speciaux mal interprété
    Par xclam dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 24/05/2007, 17h47
  2. variable mal reconnue
    Par Félix62 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/05/2007, 19h59
  3. type de variable mal interprêté
    Par hisy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/04/2007, 11h09
  4. Servlet mal interprétée
    Par Séb@s dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 01/12/2006, 14h52
  5. Réponses: 4
    Dernier message: 29/06/2005, 11h40

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