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

Linux Discussion :

script shell perte de valeurs de mes variables.


Sujet :

Linux

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut script shell perte de valeurs de mes variables.
    salut a tous

    voila j'ai un petit pb je realise un script mais j'ai un pb en effet je perds mes valeurs

    mon script est du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    commande | while read ligne || [[ $FIN = 1 ]] 
    do
    ### je recupere des valeurs dans ma commande ca passe bien, je les vois bien avec un echo
    done
     
    ### a partir de la un echo de mes valeur mes renvoi rien je comprends pas ...
    if [mes valeurs sont defini dans la boucle d'avant] then
     
    fi

    je comprends pas pkoi je perds mes valeurs a la fin de ma boucle while

  2. #2
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Parce que ton process fork (crée un processus fils).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    commande | while read ligne || [[ $FIN = 1 ]] 
    do
    Si commande correspond à un cat fichier , alors faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while read ligne || [[ $FIN = 1 ]] 
    do
    .../...
    done < fichier

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par BlaireauOne Voir le message
    Parce que ton process fork (crée un processus fils).
    Ce qui est marrant c'est que ça marche en ksh (et j'ai jamais compris pourquoi)

    Citation Envoyé par BlaireauOne Voir le message
    Si commande correspond à un cat fichier , alors faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while read ligne || [[ $FIN = 1 ]] 
    do
    .../...
    done < fichier
    Ou mieux => passer par des descripteur spécifiques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    exec 3<fichier
    while read ligne 0<&3
    do
    .../...
    done
    Ca permet ainsi de traiter plusieurs fichiers en parallèle si besoin...

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par BlaireauOne Voir le message
    Parce que ton process fork (crée un processus fils).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    commande | while read ligne || [[ $FIN = 1 ]] 
    do
    Si commande correspond à un cat fichier , alors faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while read ligne || [[ $FIN = 1 ]] 
    do
    .../...
    done < fichier
    salut deja merci de vos réponse

    et non ce n'est pas un "cat de mon fichier.txt"
    c'est une commande qui me permet de voir l'etat de mes disk via le controleur RAID...
    il faudrait donc que je renvoie le résultat de cette commande dans un fichier ? pas moyen de faire autrement ?

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par driden91 Voir le message
    il faudrait donc que je renvoie le résultat de cette commande dans un fichier ? pas moyen de faire autrement ?
    Exactement ça. Si t'as besoin d'avoir tes variables hors de ta boucle faut pas que t'aies de pipe => passage par un fichier obligé !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    commande >/tmp/result_$$
    exec 3</tmp/result_$$
    while read ligne 0<&3
    do
        blablabla je crée mes variables blablabla
    done
    blablabla je traite mes variables blablabla
    rm -f /tmp/result_$$

  6. #6
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Utilise mktemp.

    Tu peux aussi essayer de lancer le premier processus en background et rediriger sa sortie vers un tube nommé (mkfifo). Ca devrait marcher, je pense.

Discussions similaires

  1. [XL-2003] trouver les valeurs de mes variables
    Par Ropie94 dans le forum Excel
    Réponses: 4
    Dernier message: 23/08/2009, 12h53
  2. En script shell, comment générer un nom de variable ?
    Par valefor dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 09/09/2008, 21h23
  3. Sauvegarder les valeurs de mes variables
    Par Mchupakabra dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 23/04/2008, 09h21
  4. Perte de valeur d'une variable
    Par ced600 dans le forum VBScript
    Réponses: 6
    Dernier message: 08/01/2008, 16h52
  5. Réponses: 9
    Dernier message: 30/05/2006, 10h33

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