Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1422 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  recuperer la valeur d'exit

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

recuperer la valeur d'exit

n°877549
exover
Posté le 12-01-2007 à 13:59:07  profilanswer
 

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

mood
Publicité
Posté le 12-01-2007 à 13:59:07  profilanswer
 

n°877551
P-Y
Posté le 12-01-2007 à 14:02:31  profilanswer
 

elle se trouve dans la variable speciale $? de ton shell. Cette variable est remise a jour apres chaque commande.

n°877555
exover
Posté le 12-01-2007 à 14:06:44  profilanswer
 

ben je croyais aussi mais quand je fais un echo $? ca ne me retourne pas la valeur entré dans mon script.

n°877558
P-Y
Posté le 12-01-2007 à 14:08:03  profilanswer
 

ca retourne combien?

n°877561
exover
Posté le 12-01-2007 à 14:13:34  profilanswer
 

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.

n°877565
l0ky
Posté le 12-01-2007 à 14:17:08  profilanswer
 

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
n°877568
exover
Posté le 12-01-2007 à 14:24:25  profilanswer
 

heu.... comment je fais appel a mon script2 avec $? en parametre puisque je ne peux recuperer la valeur $? (puisque shell different)

n°877570
l0ky
Posté le 12-01-2007 à 14:25:58  profilanswer
 


> script1
> script2 $?

n°877571
P-Y
Posté le 12-01-2007 à 14:26:01  profilanswer
 

./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
n°877573
exover
Posté le 12-01-2007 à 14:32:45  profilanswer
 

heu.... ok mais comment je recupere la valeur de $? du script1 pour l'utiliser dans mon script2??

mood
Publicité
Posté le 12-01-2007 à 14:32:45  profilanswer
 

n°877580
exover
Posté le 12-01-2007 à 14:35:37  profilanswer
 

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

n°877584
exover
Posté le 12-01-2007 à 14:40:26  profilanswer
 

une derniere question, quand on tappe:
script1;script2
si le script 1 sort en erreur, est ce que le script2 s'execute quand meme??

n°877585
neriki
oenologue
Posté le 12-01-2007 à 14:42:46  profilanswer
 

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
n°877586
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 12-01-2007 à 14:42:47  profilanswer
 

oui


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°877587
exover
Posté le 12-01-2007 à 14:44:47  profilanswer
 

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?

n°877588
philx
Posté le 12-01-2007 à 14:45:09  profilanswer
 

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
n°877590
exover
Posté le 12-01-2007 à 14:49:30  profilanswer
 

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

n°877591
philx
Posté le 12-01-2007 à 14:53:32  profilanswer
 

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

n°877593
exover
Posté le 12-01-2007 à 14:58:49  profilanswer
 

donc aucun moyen de recuperer cette valeur??

n°877596
philx
Posté le 12-01-2007 à 15:01:24  profilanswer
 

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

n°877601
exover
Posté le 12-01-2007 à 15:07:29  profilanswer
 

le "." sert a dire qu'on se trouve dans le repertoire courrant? pour qu'il puisse verifier la valeur de l'exit?

n°877609
philx
Posté le 12-01-2007 à 15:13:14  profilanswer
 

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
n°877610
philx
Posté le 12-01-2007 à 15:14:44  profilanswer
 

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

n°877614
exover
Posté le 12-01-2007 à 15:37:25  profilanswer
 

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?

n°877618
exover
Posté le 12-01-2007 à 15:52:53  profilanswer
 

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
n°877620
Splinter_7
Posté le 12-01-2007 à 16:00:38  profilanswer
 

aaaaaaaa

n°877621
Splinter_7
Posté le 12-01-2007 à 16:01:06  profilanswer
 

aaaa

n°877622
exover
Posté le 12-01-2007 à 16:04:51  profilanswer
 

un probleme Splinter_7 :D :D :D

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  recuperer la valeur d'exit

 

Sujets relatifs
Récupérer l'OID d'un Cisco 3750comment récupérer l'icone sur le bureau pour Skype
Récupérer la main sur mon serveurrecuperer le PID d'un script
Récupérer le contenu d'un dossierRecuperer un MS-DOS Uninstall d'un logiciel
rsync a tout supprimé : possible de recupérer des données ?Recuperer des fichier supprimé sur de l'ext3
[redhat 7.2] comment recuperer des fichiers effacés (ext3)Récuperer une Table de Partitions ?
Plus de sujets relatifs à : recuperer la valeur d'exit


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR