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 :

[KSH] Mes variables se superposent quand je les imprime à la suite


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut [KSH] Mes variables se superposent quand je les imprime à la suite
    Bonjour,
    j'ai un problème de comportement avec le script suivant, dont le but est de récupérer une variable dans un fichier de config, par sa clé.
    Le fichier ressemble à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    BOUCHON_HOST=11.22.33.44
    BOUCHON_LOGIN=login
    BOUCHON_PWD=motdepasse
    BOUCHON_RACINE=/un/chemin/normal/
    et le script:
    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
     
    # $1= la cle recherchée $2=le fichier dans lequel lire
    getPropertyFile(){
     
      VALEUR=""
      while read Line
      do
      	echo ${Line} | awk -F"=" '{print $1}' | read CLE
      	if [ $CLE = $1 ]
      	then
      		echo ${Line} | awk -F"=" '{print $2}' | read VALEUR
      		VALEUR_TMP=X${VALEUR}X
      		if [ ${VALEUR_TMP} = "XX" ]
        	then
        			VALEUR="VALEUR NON TROUVEE"
          fi
      	fi
      done < $2
    }
     
     
    getPropertyFile BOUCHON_HOST paramFtp.cnf
    FTPHOST=$VALEUR
    getPropertyFile BOUCHON_LOGIN paramFtp.cnf
    FTPLOGIN=$VALEUR
     
     
    echo $FTPHOST
    echo $FTPLOGIN
    echo "et la c'est le drame:"
    echo "$FTPHOST $FTPLOGIN"
    Les impressions de mes variables une par une se passent bien, mais quand je les imprime ensemble, j'ai un vieux bug, comme si mes variables se superposaient (en plus le troisième echo commence par un espace):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    wmadmD01 MAGELLAN:# ./test.sh
    11.22.33.44
    login
    et la c'est le drame:
     login33.44
    wmadmD01 MAGELLAN:#
    Quelqu'un a une idée?
    J'ai essayé diverses combinaisons de tr et de sed pour supprimer les caractères spéciaux mais sans résultat :'(
    Merci d'avance

  2. #2
    Membre expérimenté Avatar de fransoo
    Inscrit en
    Novembre 2009
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 209
    Par défaut
    J'essayerais déjà avec une fonction plus simple (utilisant grep) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    getPropertyFile(){
      valeur=$(grep -w ^$1 $2) || valeur="VALEUR NON TROUVÉE"
      valeur=${valeur#*=}
    }

  3. #3
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    Re,

    même en utilisant ton script le résultat est le même.

    je viens de faire d'autres tests et je me suis aperçu presque par accident que mon fichier de config avait été copié en binaire depuis un poste windows...
    Visiblement la présence de CRLF provoque des comportements bizarres (le circonflexe du ^M provoque un "début de ligne"?)
    Bref, je vais déjà commencer par virer les Carriage Return, toput en gardant ton script, qui est quand même plus propre (c'est limite vexant, je l'aimais bien ma fonction moi ). Je rajoute juste le "=" dans la recherche. Sinon je risque d'avoir un soucis avec fichier
    BOUCHON_HOST=tutu
    BOUCHON_HOST1=toto.

    au final:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    getPropertyFile(){
      VALEUR=$(grep "^$1=" $2) || VALEUR="VALEUR NON TROUVEE"
      VALEUR=${VALEUR#*=}
      VALEUR=$(echo $VALEUR | tr -d '\r')
    }

    Merci!

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 290
    Par défaut
    Avec un tel format, il est aussi simple de sourcer le fichier de configuration.

  5. #5
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    Pourquoi pas...
    on peut importer une source dynamiquement?
    Le fichier de propriété à utiliser est sélectionné selon divers paramètres "fonctionnels".

    edit: je viens de faire le test et ça marche bien, je me méfie juste des implications que ça pourrait avoir (genre si une variable de mon fichier de conf a le même nom qu'une variable d'un script...)

    Je garde l'idée en tout cas!

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/06/2015, 12h01
  2. Réponses: 3
    Dernier message: 04/03/2011, 14h45
  3. [XL-2003] trouver les valeurs de mes variables
    Par Ropie94 dans le forum Excel
    Réponses: 4
    Dernier message: 23/08/2009, 12h53
  4. Sauvegarder les valeurs de mes variables
    Par Mchupakabra dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 23/04/2008, 09h21
  5. Réponses: 2
    Dernier message: 24/10/2006, 22h12

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