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:
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 : 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 [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] #
j'aimerais que la seconde méthode m'affiche "ERR" et non "ok".
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 [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] #
Je suis aussi preneur du pourquoi ça ne fonctionne pas.
Merci d'avance
Sébastien
Partager