code retour de fonctions déclarées // fonctions chargées via autoload
Bonjour,
afin de réutiliser plusieurs morceaux de codes gérant les différents traitement de mon projet, j'ai mis en place des bibliothèques via FPATH et autoload avec ksh. J'urilise /usr/bin/ksh sur AIX 7.1.
J'ai un comportement étrange entre l'utilisation de fonctions déclarées dans le shell courant et appelées via autoload.
Un exemple sera certainement plus parlant:
Soient les 2 fonctions suivantes:
- function fa { return 2; }
- function fb { [[ $? -ne 0 ]] && echo "ERR" || echo "ok"; }
si je les déclare dans le shell, que j'appelle fa puis fb, j'ai bien le message ERR qui s'affiche:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| [user@partition - /home/user]
# function fa { return 2;}
[user@partition - /home/user]
# fa
[user@partition - /home/user]
# echo $?
2
[user@partition - /home/user]
# function fb { [[ $? -ne 0 ]] && echo "ERR" || echo "ok"; }
[user@partition - /home/user]
# fb
ok
[user@partition - /home/user]
# fa
[user@partition - /home/user]
# fb
ERR
[user@partition - /home/user]
# |
en revanche, si je colle ces 2 fonctions dans des fichiers séparés portant leur nom, que je déclare le dossier contenant ces 2 fichiers dans FPATH puis que je les charge via autoload; lorsque j'appelle fa puis fb, c'est le message OK qui s'affiche.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| [user@partition - /home/user]
# echo 'function fa { return 2;}'> fa
[user@partition - /home/user]
# echo 'function fb { [[ $? -ne 0 ]] && echo "ERR" || echo "ok"; }' > fb
[user@partition - /home/user]
# export FPATH=$PWD
[user@partition - /home/user]
# autoload fa
[user@partition - /home/user]
# autoload fb
[user@partition - /home/user]
# fa
[user@partition - /home/user]
# fb
ok
[user@partition - /home/user]
# |
j'aimerais que la seconde méthode m'affiche "ERR" et non "ok".
Je suis aussi preneur du pourquoi ça ne fonctionne pas.
Merci d'avance
Sébastien