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 POSIX Discussion :

Exécuter un script à partir d'un autre script


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Par défaut Exécuter un script à partir d'un autre script
    Je cherche à exécuter une fonction qui se trouve dans un script contenant un ensemble de fonction

    Par exemple:

    ScriptA
    Fonction1
    Fonction2
    Fonction3

    Le scriptA ne peut pas s’exécuter directement, il contient un ensemble de fonctions et
    je n'ai pas le droit de créer un programme principal dans le script, du coup j'ai créé un scriptB contenant la fonction que je veux exécuter (fonction3) et l'appel du scriptA

    ScriptB
    Appel scriptA
    Fonction3


    Ensuite je crée un scriptC qui fait appel au scriptB et exécute n fois le scriptA

    ScriptC

    Appel ScriptB
    Execute n fois scriptA

    Je suis partie dans ce raisonnement, mais je n'arrive toujours pas à exécuter ma fonction (fonction3)
    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Bonjour,



    Citation Envoyé par Moi302 Voir le message
    Le scriptA ne peut pas s'executer directement, il contient un ensemble de fonction et
    je n'ai pas le droit de créer un programme principal daans le script
    Si le ScriptA ne peut pas s'executer directement et ne contient que des fonctions, il faut le sourcer et non l'exécuter!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ cat ScriptB
    #!/bin/sh (ou le shell que tu veux)
    . ./ScriptA (ou le bon chemin vers le ScriptA)
    Fonction3
     
    $ chmod +x ScriptB
    $ ./ScriptB
    => exécution de Fonction3

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Par défaut
    Merci c'est exactement ce que j'ai fait pour l'appel du scriptA dans le scriptB
    Mais est ce que je dois faire le même type d'appel du scriptB dans le scriptC ??
    Par exemple:
    . ../ScriptB

  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Par défaut
    Voilà à peu prés ce que j'ai fait dans le scriptC

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while [ $i -lt 10 ]
    do
     exec "${RepertoireSh}/ScriptB.ksh"
      i=$(( ${i} + 1 )) 
    done 
    return 0
    Je dois lancer ce script avec les paramètres du scriptB.
    Mais comme je fais un appel du scriptB, est-ce que j'ai besoin de déclarer les paramétres du scriptB dans mon scriptC ?

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Je vois que tu as essayé d'utiliser la balise CODE et je t'en remercie!
    Mais il faut mettre le code entre UNE balise CODE et UNE balise /CODE !!!
    Pour un groupe de lignes de code, on peut:
    - soit cliquer une fois le '#' (qui va insérer les balises), puis insérer le code entre le ']' et le '['
    - soit insérer d'abord le code, le sélectionner et cliquer une fois le '#' (qui va l'encadrer avec les balises)
    (je reformate dans la citation)

    Citation Envoyé par Moi302 Voir le message
    Voilà à peut prés ce que j'ai fait dans le scriptC

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while [ $i -lt 10 ]
    do
     exec "${RepertoireSh}/ScriptB.ksh"
      i=$(( ${i} + 1 )) 
    done 
    return 0
    Je dois lancer ce script avec les paramètres du scriptB.
    Mais comme je fait un appel du scriptB, est ce que j'ai besoin de déclarer les paramétré du scriptB dans mon scriptC
    Je crois qu'il ne faut pas utiliser 'exec' sinon ton scriptC se terminera après le premier appel de ScriptB.

    J'ai du mal à comprendre cette histoire de déclaration de paramètres!

    Veux-tu dire que le scriptC doit être appelé avec des paramètres qui doivent être passés au scriptB?

    Si oui, quelque chose come ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ cat ScriptC
    #!/bin/sh
    param1=$1
    param2=$2
     
    while [ $i -lt 10 ]
    do
     "${RepertoireSh}/ScriptB.ksh" "${param1}" "${param2}"
      i=$(( ${i} + 1 )) 
    done 
    return 0

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2010, 08h56
  2. Réponses: 1
    Dernier message: 12/08/2009, 16h25
  3. Réponses: 5
    Dernier message: 23/12/2007, 15h12
  4. Réponses: 1
    Dernier message: 05/10/2007, 23h15
  5. Réponses: 7
    Dernier message: 30/09/2004, 12h19

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