recuperer la valeur d'exit

recuperer la valeur d'exit - Codes et scripts - Linux et OS Alternatifs

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

Reply

Marsh Posté le 12-01-2007 à 13:59:07   

Reply

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.

Reply

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.

Reply

Marsh Posté le 12-01-2007 à 14:08:03    

ca retourne combien?

Reply

Marsh Posté le 12-01-2007 à 14:13:34    

si si je m'exprime mal en faites :D
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.

Reply

Marsh Posté le 12-01-2007 à 14:17:08    

exover a écrit :

si si je m'exprime mal en faites :D
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.


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 $?


Shell 1
  \_ Script 1
  |  \_ exit 3
  |
  | echo $? <- marche ici
  |
  |_ Script 2
      \_ echo $? <- marche pas ici

 

Au pire appel ton script 2 avec $? en parametre, et récupère ce parametre...


Message édité par l0ky le 12-01-2007 à 14:18:31
Reply

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)

Reply

Marsh Posté le 12-01-2007 à 14:25:58    


> script1
> script2 $?

Reply

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 :o


Message édité par P-Y le 12-01-2007 à 14:26:13
Reply

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??

Reply

Marsh Posté le 12-01-2007 à 14:32:45   

Reply

Marsh Posté le 12-01-2007 à 14:35:37    

non c'est bon j'ai trouvé, ma valeur $? est en $1 maintenant.
 
Merci bcp.

Reply

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??

Reply

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


---------------
C'est pas bon, Neriki, tu recommences à glander, là. :o
Reply

Marsh Posté le 12-01-2007 à 14:42:47    

oui


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

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?

Reply

Marsh Posté le 12-01-2007 à 14:45:09    

Le plus simple est de tester non?  :p (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  :cry: désolé.


Message édité par philx le 12-01-2007 à 14:46:03
Reply

Marsh Posté le 12-01-2007 à 14:49:30    

philx> oui j'ai tester juste apres avoir posé ma question en faites :D :D
 
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 :(

Reply

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).

Reply

Marsh Posté le 12-01-2007 à 14:58:49    

donc aucun moyen de recuperer cette valeur??

Reply

Marsh Posté le 12-01-2007 à 15:01:24    

Ah oui pardon la réponse :-)
. script1 && script2
 
note le '.' au début.

Reply

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?

Reply

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
              An array variable whose values are the number of parameters in each frame of the current bash exeâ
              cution  call  stack.  The number of parameters to the current subroutine (shell function or script
              executed with . or source) is at the top of the stack.  When a subroutine is executed, the  number
              of  parameters  passed  is  pushed onto BASH_ARGC.  The shell sets BASH_ARGC only when in extended
              debugging mode (see the description of the extdebug option to the shopt builtin below)


 
Exemple:
phil@karikate:/tmp$ cat s1
export toto=1
echo $BASH_ARGC
 
phil@karikate:/tmp$ ./s1
 
phil@karikate:/tmp$ . s1
1


Message édité par philx le 12-01-2007 à 15:14:07
Reply

Marsh Posté le 12-01-2007 à 15:14:44    

arf .. désolé je maîtrise carrément pas les affichages dans les forums lol

Reply

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?

Reply

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 :D :D 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 :D :D


Message édité par exover le 12-01-2007 à 15:56:23
Reply

Marsh Posté le 12-01-2007 à 16:00:38    

aaaaaaaa

Reply

Marsh Posté le 12-01-2007 à 16:01:06    

aaaa

Reply

Marsh Posté le 12-01-2007 à 16:04:51    

un probleme Splinter_7 :D :D :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed