Shell Retour de fonction

Fermé
Kikou - 2 sept. 2009 à 14:32
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 2 sept. 2009 à 17:30
Bonjour,

J'ai une fonction en shell voici sa description :
function stats
{
....
SQL_EXE_Proc="exec Procedure1"
....
}

Cette fonction exécute une procédure dans une base de donné sybase , avec la connexion qu'il faut au préalable.

Je voudrai faire ceci : récupérer le code retour de la fonction : donc avec un $?

Donc je fais :
if ["$?" == 0 ] then echo "Réussi"
else
echo " échoue"
fi

Je comprend pas pourquoi ca ne marche pas , le code retour est toujours 0 malgré que je vais en sorte que la fonction stats échoue.

Je comprend pas ??? Merci d'avance si vous avez des idées .
A voir également:

3 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
2 sept. 2009 à 15:14
Salut,

Essai
if [ $? -eq 0 ]
0
Le problème c'est que quoi qu'il arrive ma fonction renvoie 0 !!!
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
2 sept. 2009 à 17:30
Salut,

Le code retour d'une fonction se gère à l'intérieur de la fonction avec "return" (le cousin de "exit").

Un exemple sera beaucoup plus parlant :
[tmpfs]$ cat bar.sh
#! /bin/sh

#set -xv

ma_fonction () {
ping -c 1 192.168.10.${1} >/dev/null && return 0 || return 1
}

ma_fonction $1

if [ $? = "0" ]
then echo "Réussi ;-) "
else echo "Echec :-( "
fi

[tmpfs]$ ./bar.sh 20     # ma passerelle sur le LAN
Réussi ;-)

[tmpfs]$ ./bar.sh 22     # un PC qui n'existe pas
Echec :-(

[tmpfs]$ 
;-))
0