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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Tester valeur de retoru

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tester valeur de retoru

n°1277487
Sphost
Posté le 05-01-2006 à 11:46:09  profilanswer
 

Bonjour à tous,
Voici mon script shell
 

Code :
  1. #!/bin/bash/
  2. ...
  3. sqlplus [mes_arguments]
  4. echo $?
  5. ...


 
Mon problème est le suivant :
Que ma commande sqlplus se plante ou non mon echo $? retourne toujours 0 ...
Aparament la variable $? ne récupère pas la valeur de retour de sqlplus, comment puis-je faire pour récupérer la valeur de retour de l'exécution de ma commande sqlplus?
 
Merci d'avance

mood
Publicité
Posté le 05-01-2006 à 11:46:09  profilanswer
 

n°1277562
PierreC
Posté le 05-01-2006 à 13:31:52  profilanswer
 

Ben je dirais que c'est la commande sqlplus qui est mal ecrite ou bien pas ecrite comme tu le voudrai, et donc qu'elle indique qu'elle c'est tj bien terminer.
 
Essayer ca deja pour savoir où est envoyé le message d'erreur (sortie standard ou erreur)
 
sqlplus [mes_arguments] > log.log 2> err.log


---------------
Du tofu en Alsace : www.tofuhong.com
n°1277565
Elmoricq
Modérateur
Posté le 05-01-2006 à 13:42:11  profilanswer
 

PierreC a écrit :

Ben je dirais que c'est la commande sqlplus qui est mal ecrite ou bien pas ecrite comme tu le voudrai, et donc qu'elle indique qu'elle c'est tj bien terminer.


 
Pas forcément.
J'ai le même comportement avec isql, et je le conçois de la manière suivante : ce n'est pas mon interpréteur sql qui plante, il a bien envoyé sa requête, a bien reçu une réponse du serveur de base de données, a pu la traiter correctement et terminer son boulot.
Donc même si le serveur retourne une erreur (c'est-à-dire une interprétation de ta requête), ton interpréteur sql retourne 0, ce qui est logique puisqu'il a pu mener sa tâche à bien.

n°1277580
Sphost
Posté le 05-01-2006 à 14:06:36  profilanswer
 

Citation :

ton interpréteur sql retourne 0, ce qui est logique puisqu'il a pu mener sa tâche à bien.


 
Ok car en fait j'avais essayer avec le code suivant :
 

Code :
  1. more fic
  2. echo $?


Ou fic est un fichier qui n'existe pas, et mon echo $? retournait 0 donc si on suit le même raisonnement, le more retour un message d'erreur mais retourne qd même 0 puisqu'il a pu mener sa tâche à bien?
Ou alors $? ne prend pas la valeur de résultat?

n°1277583
Elmoricq
Modérateur
Posté le 05-01-2006 à 14:09:43  profilanswer
 

Non, tu n'as pas suivi mon raisonnement.
Dans le cas du more, il n'a pas pu exécuter ce qu'on lui demandait de faire : le fichier n'existe pas.
 
Dans le cas de l'interpréteur sql, il a pu donner sa requête au serveur et recevoir une réponse. Donc il retourne 0.
En revanche, si tu lui donnes de mauvaises informations de connexion, il ne peut terminer son travail et ne retournera pas 0.
 

$ isql -S machin
CT-LIBRARY error:
        ct_connect(): directory service layer: internal directory control layer error: Requested server name not found.
$ echo $?
255
$


 
 
Bref, l'erreur que tu reçois est une erreur SQL provenant du serveur. Ce n'est pas une erreur de sqlplus.
Donc le code retour n'a aucune raison d'être différent de 0.


Message édité par Elmoricq le 05-01-2006 à 14:10:17
n°1277602
Sphost
Posté le 05-01-2006 à 14:28:33  profilanswer
 

Oki merci beaucoup, je vais essayer de trouver une solution aux problèmes

n°1277618
Elmoricq
Modérateur
Posté le 05-01-2006 à 14:36:00  profilanswer
 

La meilleure solution c'est, comme le propose pierreC, de rediriger le flux d'erreur vers un fichier.
Lis son post pour voir comment faire.
 
Après il te suffit de tester le fichier d'erreur. Par exemple s'il a une taille non nulle, tu sais que quelque chose à couillé. :)

n°1280071
matafan
Posté le 10-01-2006 à 05:43:38  profilanswer
 

Si tu choisis de capturer stderr dans un fichier comme proposé, n'oublie pas de lancer la command avec LANG=C. Sinon la sortie varie en fonction de la locale utilisée au moment de l'appel, et il est impossible de faire un test qui marche dans tous les cas.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Tester valeur de retoru

 

Sujets relatifs
[JS] Problème pour changer une valeur ds un input[VBS] Recuperer une valeur depuis un autre script
valeur dwNewLong API32[dom] Obtenir la valeur d'un noeud
[VBS] Tester la présence d'un Certificatrequête sql d'une valeur sur tout les champs d'une table
Main et valeur de retourrépéter valeur
[SQL]comment tester l'existence d'une vue ?Comment changer de valeur d'un <select> quand on clique dessus ?
Plus de sujets relatifs à : Tester valeur de retoru


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