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 persistante (bash, sed)


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 Variable persistante (bash, sed)
    Un petit truc pour rendre une variable (numérique) persistante pour un script.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/bash
    Persist()	{	# 1:Expression like VARIABLE=Value (numeric)
    	local V=${1%=*}
    	eval "$1"
    	sed -i "s/^$V=[0-9][0-9]*/$1/" $0 || return 1
    }
    Et l'utilisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # BEGIN
    AA=12
    read -p "Entrez une valeur : " NEW_AA
    # je passe la vérification de valeur numérique ...
    [ $NEW_AA != $AA ] && Persist AA=$NEW_AA
    Et le tour est joué
    Maintenant, pour les spécialistes des expressions régulières et de sed : S'il y a des propositions pour étendre ça aux autres types de variables, ce sera bienvenu

  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
    Voilà une proposition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Persist()	{	# 1:Expression like VARIABLE=Value (numeric)
    	local V=${1%=*}
    	eval "$1"
    	sed -i "s/^$V=.[^ ]*/$1/" $0 || return 1
    }

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    euh...

    export


    tout simplement...

  4. #4
    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
    Citation Envoyé par souviron34 Voir le message
    euh...
    export
    tout simplement...
    Mais cela n'exporte que dans l'environnement du script actif. C'est perdu après un exit.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par fransoo Voir le message
    Mais cela n'exporte que dans l'environnement du script actif. C'est perdu après un exit.
    euh non..

    C'est valable durant la durée de vie de l'environnement, pas du script...


    Exemple :

    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
     
    ###!/bin/ksh
     
    A=`uname`
     
    if [ $A =  "ULTRIX" ]
    	then export MACHINE=mips
    elif  [ $A =  "SunOS" ]
    	then export MACHINE=sparc
    elif  [ $A =  "HP-UX" ]
    	then export MACHINE=HP-UX
    elif  [ $A =  "Linux" ]
        then export MACHINE=i386
    elif  [ $A =  "CYGWIN_NT-5.1" ]
        then export MACHINE=win
    else
        echo "Error: unknown machine"
    fi ;
    A la sortie de ce script, la variable d'environnement MACHINE est settée...


    Tant que le shell existe, cette varaible existe...

  6. #6
    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
    Sur un terminal je lance un script 'test.sh' contenant ces lignes --> je ne retrouve pas la variable dans l'environnement de mon terminal.
    Si j'ajoute une commande env à la fin de mon script c'est OK, je vois la variable.

Discussions similaires

  1. Variable persistante dans un partialLoop() ?
    Par Samsawell dans le forum Zend Framework
    Réponses: 0
    Dernier message: 04/04/2011, 11h18
  2. script bash SED
    Par alex_2009 dans le forum Linux
    Réponses: 5
    Dernier message: 22/06/2009, 04h22
  3. Lecture de variable (programmation bash)
    Par anarchy_for_espa dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 22/02/2008, 10h58
  4. [Dates] Variable persistante à arrêter!
    Par godjojo dans le forum Langage
    Réponses: 7
    Dernier message: 20/05/2007, 19h12
  5. probleme de récupération de variable en bash avec awk
    Par avogadro dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 24/12/2006, 01h31

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