recuperer la valeur d'exit - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 12-01-2007 à 14:02:31
elle se trouve dans la variable speciale $? de ton shell. Cette variable est remise a jour apres chaque commande.
Marsh Posté le 12-01-2007 à 14:06:44
ben je croyais aussi mais quand je fais un echo $? ca ne me retourne pas la valeur entré dans mon script.
Marsh Posté le 12-01-2007 à 14:13:34
si si je m'exprime mal en faites
par exemple j'ai mis exit 3 dans le script 1, je lance le script 2, sa premiere commande est un echo de la variable $? et la????? il me retourne 0.
Marsh Posté le 12-01-2007 à 14:17:08
exover a écrit : si si je m'exprime mal en faites |
Parce que tu as changé de shell entre temps...
C'est dans le shell qui a appelé ton script 1 qu'il faut faire le echo $?
|
Au pire appel ton script 2 avec $? en parametre, et récupère ce parametre...
Marsh Posté le 12-01-2007 à 14:24:25
heu.... comment je fais appel a mon script2 avec $? en parametre puisque je ne peux recuperer la valeur $? (puisque shell different)
Marsh Posté le 12-01-2007 à 14:26:01
./script1.sh; ./script2.sh $?
et dans script2.sh tu recuperes $1 pour avoir la valeur
edit: grilled
Marsh Posté le 12-01-2007 à 14:32:45
heu.... ok mais comment je recupere la valeur de $? du script1 pour l'utiliser dans mon script2??
Marsh Posté le 12-01-2007 à 14:35:37
non c'est bon j'ai trouvé, ma valeur $? est en $1 maintenant.
Merci bcp.
Marsh Posté le 12-01-2007 à 14:40:26
une derniere question, quand on tappe:
script1;script2
si le script 1 sort en erreur, est ce que le script2 s'execute quand meme??
Marsh Posté le 12-01-2007 à 14:42:46
oui, si tu ne veux pas que script2 s'execute si script1 est en erreur, tu peux faire
script1 && script2
Marsh Posté le 12-01-2007 à 14:42:47
oui
Marsh Posté le 12-01-2007 à 14:44:47
le && attend d'avoir un exit 0 si je comprend bien, si sa valeur est autre alors la suite ne s'execute pas, c'est bien cela?
Marsh Posté le 12-01-2007 à 14:45:09
Le plus simple est de tester non? (la réponse est oui il s'exécute quand même).
Par contre si tu es en bash,
script1 && script2 : exécute script2 que si 1 a marché
alors que
script1 || script2: se comporte comme le ; que tu proposes.
edit: arf .. complètement grilled désolé.
Marsh Posté le 12-01-2007 à 14:49:30
philx> oui j'ai tester juste apres avoir posé ma question en faites
sinon, savez vous comment on export une variable?
c'est a dire script 1 a une variable toto=1, le script se fini
script 2 se lance, il verifie que la variable toto est a 1 pour faire une action.
j'ai essayé de faire export toto=1 mais ca ne fonctionne pas, script 2 ne trouve pas de valeur a toto
Marsh Posté le 12-01-2007 à 14:53:32
C'est encore une histoire de changement de shell. La variable est exportée dans le schell de script 1 et ces sous-shells .. mais script2 n'est pas lancé par script1 (cf schéma de M. l0ky).
Marsh Posté le 12-01-2007 à 15:01:24
Ah oui pardon la réponse :-)
. script1 && script2
note le '.' au début.
Marsh Posté le 12-01-2007 à 15:07:29
le "." sert a dire qu'on se trouve dans le repertoire courrant? pour qu'il puisse verifier la valeur de l'exit?
Marsh Posté le 12-01-2007 à 15:13:14
Attends ... ne pas confondre:
./un_programme
. un_programme
Dans le 1er cas, tu donnes explicitement l'emplacement de ton script à partir ici du répertoire courant qui s'appelle '.' (on s'en sert par exemple si on a pas ce répertoire dans le PATH).
Dans le second cas, c'est ce que tu veux. L'explication est dans le man de bash:
Spoiler : BASH_ARGC |
Exemple:
phil@karikatetmp$ cat s1
export toto=1
echo $BASH_ARGC
phil@karikatetmp$ ./s1
phil@karikatetmp$ . s1
1
Marsh Posté le 12-01-2007 à 15:14:44
arf .. désolé je maîtrise carrément pas les affichages dans les forums lol
Marsh Posté le 12-01-2007 à 15:37:25
tiens ca fonctionne aussi sans faire d'export LOL.
En faites le . dis au script s'executant de laisser les valeur des variables dans le shell courrant, c'est bien cela?
Marsh Posté le 12-01-2007 à 15:52:53
Ah non en faites le . c'est pour lui dire de s'executer dans le shell courrant ce qui fais que les variables ne sont pas dans un sous shell.
ce qui fait que si je place un exit dans mon script, ma fenetre se referme
Marsh Posté le 12-01-2007 à 13:59:07
Bonjour
J'aimerais savoir comment on fait pour recuperer la valeur retourner par exit.
Exemple dans un script j'ecrit exit 3, comment retrouver cette valeur?
Merci a vous