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 :

Modification d'une variable passée en paramètre


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Par défaut Modification d'une variable passée en paramètre
    Bonjour,

    Voilà mon souci. Je cherche à modifier la valeur d'une variable que je passe en argument d'une fonction.

    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
    maFonction
    {
        if  ping -c 3 192.168.xxx.xxx
        then
             $1=true
        fi
     
        echo ${var1} #devrait renvoyer true si ping ok
    }
    var1=false
    var2=false
     
    maFonction '$var1'
    ...
    maFonction '$var2'
    Quand je teste mon script, j'obtiens ce genre d'erreur
    test.sh: line 86: $var1=true: command not found

    Est-ce que quelqu'un a une idée? La solution alternative est d'utiliser case mais c'est beaucoup plus long.

    merci d'avance

    edit:j'ai complété la fonction que j'utilise

  2. #2
    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 en faisant comme ça, ça ne fonctionnerait pas mieux ?
    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.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Par défaut
    Merci pour la réponse mais le problème est identique.

  4. #4
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 50
    Par défaut
    Et ceci :

    mafonction ${var1} ?

  5. #5
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 50
    Par défaut
    Citation Envoyé par kstou2001 Voir le message
    Bonjour,

    Voilà mon souci. Je cherche à modifier la valeur d'une variable que je passe en argument d'une fonction.

    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
    maFonction
    {
        if ...
        then
         $1=true
        fi
     
     
    }
    var1=false
    var2=false
     
    maFonction '$var1'
    ...
    maFonction '$var2'
    Quand je teste mon script, j'obtiens ce genre d'erreur
    test.sh: line 86: $var1=true: command not found

    Est-ce que quelqu'un a une idée? La solution alternative est d'utiliser case mais c'est beaucoup plus long.

    merci d'avance
    Bonjour,

    As-tu essayé avec :
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    typeset var=$1
    var="true"
    et de lancer tes fonctions comme ça : (sans les apostrophes)

  6. #6
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Par défaut
    Citation Envoyé par Aiglon13 Voir le message
    Bonjour,

    As-tu essayé avec :
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    typeset var=$1
    var="true"
    et de lancer tes fonctions comme ça : (sans les apostrophes)
    maFonction $var1
    ou
    maFonction "$var1"
    =
    maFonction false

    J'ai rajouté un echo $1 dans maFonction. Il n'y a qu'avec les simple quote que je récupère le nom de ma variable. Par contre impossible de lui affecter une valeur.

  7. #7
    Expert confirmé

    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
    Par défaut
    Salut,

    Une fonction se déclare soit comme ça function maFonction { cmd; }, soit comme ça maFonction () { cmd; } (note les parenthèses dans le second cas).

    Et d'autres part si tu encadres tes variables par des quotes simples maFonction '$var1' elles ne seront pas interprétées
    Il faut obligatoirement les entourées de quotes doubles maFonction "${var1}". Les entourées également d'accolades est une bonne habitude à prendre.

  8. #8
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Et d'autres part si tu encadres tes variables par des quotes simples maFonction '$var1' elles ne seront pas interprétées
    Il faut obligatoirement les entourées de quotes doubles maFonction "${var1}". Les entourées également d'accolades est une bonne habitude à prendre.
    Dans mon cas je ne souhaite pas utiliser la valeur de la variable mais son nom pour lui affecter ensuite une valeur.

    Mettre des doubles quotes me génère cette erreur
    test.sh: line 86: false=true: command not found

  9. #9
    Expert confirmé

    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
    Par défaut
    Citation Envoyé par kstou2001 Voir le message
    Dans mon cas je ne souhaite pas utiliser la valeur de la variable mais son nom pour lui affecter ensuite une valeur.
    Alors le "$" est inutile devant

    Quid de ta déclaration de fonction ? L'as-tu modifié ?

    Sans savoir ce que fait ta fonction exactement, difficile d'interpréter le résultat de ton erreur

  10. #10
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Alors le "$" est inutile devant

    Quid de ta déclaration de fonction ? L'as-tu modifié ?

    Sans savoir ce que fait ta fonction exactement, difficile d'interpréter le résultat de ton erreur
    ma fonction va pinger un serveur. S'il répond la variable passe à true. (je venais de compléter maFonction pour être plus parlant)

    J'ai déjà essayé d'appeler la fonction de la manière suivante mais c'est pas mieux
    maFonction 'var1'
    erreur:essai.sh: line 6: var1=true: command not found==> pourtant c'est ce que je souhaite: que var1 passe à true.

  11. #11
    Expert confirmé

    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
    Par défaut
    Affiche ton code complet, on n'est pas devin

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/03/2014, 21h54
  2. Réponses: 11
    Dernier message: 01/02/2011, 15h20
  3. Nom d'une variable passée en paramètre à une fonction
    Par cata2 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 07/09/2007, 09h17
  4. modification d'une chaîne passée en paramètre
    Par g0up1l dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 25/03/2007, 18h17
  5. Réponses: 6
    Dernier message: 28/05/2004, 09h39

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