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 :

Shellscript: variable qui disparait


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 26
    Par défaut Shellscript: variable qui disparait
    Salut tous

    Voila un petit script qui lit un fichier et recupere les valeurs que je souhaite.

    Mais a la fin de la boucle la variable $result est vide, une idee?

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
     
    #!/bin/sh
     
    write_line()
    {
        if [ -z "$result" ]
            then
            result="$val";
        else
            result="$result\n$val";
        fi
    }
     
    resu="$(cat test.txt | grep -En k)";
     
    echo -e "$resu" | while read myline;
      do
          newline="$(echo $myline | cut -c3-)";
          key="$(echo $newline | cut -d: -f1)";
          val="$(echo $newline | cut -d: -f2)";
          res="$(echo $key | grep -n k)";
          if [ -n "$res" ]
              then
              echo "<on entre $result>"
              write_line
              echo "<on sort $result>"
          fi
    done
     
    echo "<je veux $result>"
    if [ -n "$result" ]
            then
        echo -e $result;
    fi
    le fichier test.txt contient par exemple

    key1-1:val1-1
    key1-2:val1-2
    key1-3:val3 0

  2. #2
    Membre expérimenté
    Avatar de (Benoit)
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 184
    Par défaut
    tu es sûr que ça rentre dans write_line ? met peut-être un echo dedans pour vérifier

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 26
    Par défaut
    c'est deja fais

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Le problème n'a rien à voir avec ta fonction. Le problème est que toute la partie à gauche du pipe (la boucle while) est exécutée dans un sous-process. L'appel de fonction modifie dont la variable "result" du sous-process... Ce qui n'a bien sûr aucun effet sur la variable "result" du process père, que tu affiches après la boucle.

    Une solution serait d'utiliser les parenthèses pour exécuter l'ensemble de ton code (génération de la variable + affichage) dans le sous-process, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    echo -e "$resu" | ( while read myline
    do
        ...
    done
     
    echo ...
    ...
    )

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 26
    Par défaut
    merci pour ton aide

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

Discussions similaires

  1. [Blog] Variable passée qui disparait à la page suivante
    Par glgdev dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 13
    Dernier message: 21/04/2015, 09h56
  2. Variable qui disparait en submit
    Par jejeman dans le forum Zend Framework
    Réponses: 1
    Dernier message: 13/06/2012, 19h30
  3. [MySQL] Variable qui disparait apres formulaire
    Par RomFou dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/07/2010, 14h53
  4. [CR 8] Résultat d'une variable shared qui disparait
    Par ARONE dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 11/12/2009, 08h56
  5. Contenu d'une variable qui disparait :/
    Par Aleksis dans le forum C++
    Réponses: 10
    Dernier message: 02/06/2006, 15h50

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