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 :

comment passer des chaînes de caractère d'un script à l'autre


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 295
    Par défaut comment passer des chaînes de caractère d'un script à l'autre
    Voilà, j'ai plusieurs scripts et je voudrais récupérer le résultat (variables) d'un script dans un autre pour traitement. Je sais comment on fait pour entrer des paramètres à l'appel d'un script, je sais aussi retourner une valeur numérique à la sortie d'un script, mais je ne sais comment on fait pour retourner des chaînes de caractères. Merci

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 5
    Par défaut variables d'environnement
    Je ne sais pas si cela peut répondre à ton besoin mais comme moyen de contournement tu peux utiliser un EXPORT sur la variable que tu veux partager.
    Elle sera alors accessible dans tes autres scripts.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    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 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par cpf2006 Voir le message
    Voilà, j'ai plusieurs scripts et je voudrais récupérer le résultat (variables) d'un script dans un autre pour traitement. Je sais comment on fait pour entrer des paramètres à l'appel d'un script, je sais aussi retourner une valeur numérique à la sortie d'un script, mais je ne sais comment on fait pour retourner des chaînes de caractères. Merci
    En shell, une fonction où un script ne peut retourner qu'une valeur comprise entre 0 et 255. 0 signifiant "ok" et tout autre chiffre signifiant "erreur" (par convention).

    Cette valeur renvoyée est connue de l'appelant car elle est recopiée dans sa variable "$?"
    Exemple
    Tu enregistres ce code dans un fichier "toto.sh" puis tu l'exécutes depuis ton shell courant. Puis tu affiches "$?" => echo $? => tu auras 50

    Autre exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/sh
    fct()
    {
        return 60
    }
     
    fct
    echo $?
    Tu exécutes ce code, tu obtiendras 60 car la valeur renvoyée par "fct" est récupérée dans le corps principal au niveau de "$?". Donc déjà, quand je te vois parler de "renvoi de valeur numérique" je suis un peu inquiet car cette valeur que tu renvoies n'a pas un rôle de calcul mais un rôle de code d'erreur. Et même si tu passes outre, sa limitation à 255 t'empêche de t'en servir pour un gros calcul

    En shell, quand tu veux "renvoyer" quelque chose (chaines de caractères ou valeurs) tu ne peux pas le faire au sens strict du terme mais tu peux biaiser en passant par l'affichage.
    En effet, quand un code affiche un truc à l'écran, tu peux récupérer ce truc grace aux backquotes. Exemples
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var1=`pwd`
    var2=`date`
    var3=`ls -l`
    var4=`expr 12 + 15`
    Donc il te suffit de faire un script (ou une fonction) qui affiche sa chaine puis tu récupères cet affichage
    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
    19
    20
    21
    22
    #!/bin/sh
    concat()
    {
        (
            # Concaténation des paramètres reçus en une seule chaine
            res=""
            for param in $*
            do
                res="$res$param"
            done
     
            # Renvoi de la chaine concaténée
            echo $res
        )
    }
     
    # Exemple
    var1=`concat salut tout le monde`
    var2=`concat $var1 bye bye`
     
    echo "var1=[$var1]"
    echo "var2=[$var2]"
    Et tu peux te servir de cette méthode même pour de gros calculs (comme la factorielle par 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
    19
    20
    21
    #!/bin/sh
    factor()
    {
        (
            res=1
            i=2
            while test $i -le $1
            do
                res=`expr $i \* $res`
                i=`expr $i + 1`
            done
     
            echo $res
       )
    }
     
    # Exemple
    for f in 0 1 2 3 4 5 6 7 8 9 10
    do
        echo "Factorielle $f: `factor $f`"
    done
    Seul danger de cette méthode: si tu insères dans ta fonction un affichage de controle (pour debug) ben ton affichage sera aussi traité comme chaîne renvoyée

    Citation Envoyé par piemouce Voir le message
    Je ne sais pas si cela peut répondre à ton besoin mais comme moyen de contournement tu peux utiliser un EXPORT sur la variable que tu veux partager.
    Elle sera alors accessible dans tes autres scripts.
    Elle sera connue des autres scripts, certes, mais ce ne sera qu'une copie. Et les modifs que feront les autres scripts sur cette copie ne remonteront pas sur l'original
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [PHP 5.4] Peut-on passer des variables en GET d'un script à un autre?
    Par moreall dans le forum Langage
    Réponses: 13
    Dernier message: 02/02/2015, 12h56
  2. Réponses: 5
    Dernier message: 15/02/2005, 18h07
  3. Réponses: 7
    Dernier message: 30/12/2004, 12h01
  4. Passage des chaînes de caractères à une application CGI
    Par Thom@s dans le forum Composants VCL
    Réponses: 10
    Dernier message: 03/12/2004, 00h13
  5. lpici.lpverb comment récupérer la chaîne de caractère ? Help
    Par Frenchbeast dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 26/07/2004, 15h53

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