Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/08/2018, à 11:19

IFE

[Résolu] Passage de fonctions entre père et fils

Bonjour à tous,

Je rencontre un soucis que je suppose un peu basique à régler mais je n'arrive pas à trouver la solution.

Actuellement, je travaille sur un script principal (que l'on va appeler main pour simplifier) qui va appeler d'autres scripts via un menu. Pour me simplifier la vie et la lisibilité, j'ai créé un script de var_local afin d'y mettre les variables et fonctions qui pourront être utilisées par l'ensemble de mes scripts.

Pour ce faire, dans mon main, j'ai "sourcé" mon script var_local ainsi:

# Chargement du var_local.sh
#  > Exit si KO
#---------------------------
if [[ -f ./var_local.sh ]] ; then
        . ./var_local.sh
else
        echo "ALRT : Les fonctions et variables globales ne sont pas accessibles. Le script va s'arrêter !"
        exit 1
fi

Pour information, dans mon var_local, j'ai desvariables et fonctions comme suit (je ne mets pas tout mais ça donne une idée):

export REP_PARENT=$(dirname $0)                 # répertoire où se trouve les scripts et csv de la brasserie
export FIC_LOG=${REP_PARENT}/brasserie.log      # fichier de log pour toutes les actions d'admin

# Initialisation de la log
#-------------------------
log_gen(){
        local msg=$1
        local heure=$(date +%X)
        echo -e "*** ${heure} - ${msg}" 1>>${FIC_LOG}
 }

# Fonction pour simplement faire une pause
# en attendant de taper sur ENTREE
#-----------------------------------------
entree(){
        echo ""
        read -p "taper ENTREE pour revenir au menu"
}

# Gestion des erreurs
#--------------------
erreurPgm(){
        #ALRT - erreur bloquante > exit
        #INFO - erreur non bloquante (informatif) > continue
}

Bon, mon var_local étant "sourcé", je me dit: "Parfait! Le père transmettant à son fils vu que j'ai "sourcé", je peux appeler mon 1er script dans mon main" via

${REP_PARENT}/creation.sh

Mon problème est le suivant: Papa n'a pas l'air de vouloir tout transmettre à son fils chéri. Là où les variables sont correctement envoyées, les fonctions ne passent pas. J'ai le droit à :

./creation.sh: line 60: log_gen : commande introuvable
./creation.sh: line 63: erreurPgm : commande introuvable

Je suis certain de ne pas m'être planté dans les noms (un espace ou une inversion de lettre est vite arrivé). Les variables sont correctement remplacées.

Ai-je manqué un truc dans ma source?
Est-ce moi qui me fait une fausse idée des transmissions entre père et fils (je sais que ficton ne transmet rien à papounet wink )?
Vais-je carrément devoir "sourcer" de nouveau dans mon script?
Merci de votre aide smile

Dernière modification par IFE (Le 24/08/2018, à 12:01)


Amateur d'Ubuntu depuis oct. 2016  [Ubuntu 18.0.4 sur VM]  -  Je suis novice mais je me soigne
" Balancer votre ordinateur par la fenêtre n'arrangera pas les bugs de votre code. La mamie sous l'ordinateur non plus... "

Hors ligne

#2 Le 24/08/2018, à 11:45

Watael

Re : [Résolu] Passage de fonctions entre père et fils

salut,

il faut exporter les fonctions depuis le source.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 24/08/2018, à 12:00

IFE

Re : [Résolu] Passage de fonctions entre père et fils

Donc, il faudrait simplement que je fasse que le fasse un

export [i]mafonction[/i]
(avec probablement une option pour la différencier d'une variable je suis sûr)

???
Si c'est le cas, je me sens très très bête de ne pas y avoir pensé. Je pensais que 'export' était pour les variables. J'aurai du faire plus de recherche dessus...

Merci encore smile Je vais mieux chercher (pourtant le man est mon ami ^^) la prochaine fois.

NB: la commande à utiliser

export -f ma fonction

Dernière modification par IFE (Le 24/08/2018, à 13:56)


Amateur d'Ubuntu depuis oct. 2016  [Ubuntu 18.0.4 sur VM]  -  Je suis novice mais je me soigne
" Balancer votre ordinateur par la fenêtre n'arrangera pas les bugs de votre code. La mamie sous l'ordinateur non plus... "

Hors ligne