récupérer le code retour d'un sous-shell [KSH-88] - Shell/Batch - Programmation
Marsh Posté le 22-05-2020 à 08:11:31
spark a écrit : Hello !
|
Bonjour !
De mémoire, dans une fonction, on a "return", qui permet de renvoyer une valeur entière (celle testée par $?), mais il faut appeler la fonction, pas utiliser le `` (je ne savais pas que ça marchait avec des fonctions), qui prend la sortie standard de la commande.
J'espère avoir été clair et que cela vous aidera.
Bonne continuation !
Marsh Posté le 22-05-2020 à 08:51:09
Farian a écrit : |
C'est justement bien le problème
dans
Code :
|
la fonction retourne bien un code d'erreur suivant les cas. Seulement quand c'est appelé via un sous-shell ``, ça n'a pas d'effet
Marsh Posté le 22-05-2020 à 10:02:52
C'est normal : quand on crée un sous-shell, cela crée un nouveau processus, qui a sa propre copie de l'environnement, et il ne peut pas influer sur l'environnement du père. Impossible de récupérer la valeur de la variable CR après l'appel.
Marsh Posté le 22-05-2020 à 16:40:47
et en passant par un named pipe ou un fichier temporaire? C'est HB (peut-être) mais ça devrait marcher non?
Marsh Posté le 22-05-2020 à 18:15:29
J'y ai effectivement pensé au fichier, mais si je dois faire ça pour chaque fonction
Le named pipe, je connais pas, (enfin juste le nom), tu peux m'en dire plus ?
Marsh Posté le 22-05-2020 à 18:16:06
et surtout, pkoi la modification de la variable du script appelant qui est en export n'est pas modifiée dans la fonction ?
Marsh Posté le 22-05-2020 à 20:01:39
C'est bon, j'ai trouvé un "workaround"
Code :
|
=> marche pas. normal...
Code :
|
=> fonctionne
Pas besoin de pipe ou de passer par un fichier.
Bon, c'est pas "très propre", mais si on veut le code retour de ma_fonction, il suffit de rajouter
; return $? |
dans l'appel du sous-shell.
Après si quelqu'un a une autre idée, je suis preneur !
Marsh Posté le 01-06-2020 à 02:55:41
ben visiblement ça ne fonctionne pas... pas en ksh en tout cas...
j'y ai pas retouché depuis, faudrait que je teste, mais je pense que ca sera un fail, j'avais déjà passé par mal de temps sur ce truc...
Marsh Posté le 22-05-2020 à 07:38:02
Hello !
Je souhaiterais récupérer le code retour d'une fonction que j’appellerais de la façon suivante :
=> forcément, ca retourne 0, vu que c'est le résultat de l'affectation du sous-shell à la variable "toto"
J'ai donc tenté de feinter...
=> ça ne fonctionne pas...
Si quelqu'un a une idée.... Je rappelle que c'est pour du KSH-88 (no comment)
---------------
Un cycle complet sera une série de 100.