#1 Le 24/08/2018, à 10: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 )?
Vais-je carrément devoir "sourcer" de nouveau dans mon script?
Merci de votre aide
Dernière modification par IFE (Le 24/08/2018, à 11: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, à 10: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, à 11: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 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, à 12: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