Test d'égalité sur return

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour, bonsoir,


Voici ma fonction :


_getstruct() {
        if [ ! -e "$1" ]; then
	        return 0
        elif [ -f "$1" ]; then
	        return 1
        elif [ -d "$1" ]; then
	        return 2
	else
	        return 0
        fi
}

FIRST=$(_getstruct "/home/sacha")

echo $?

if [ $? -eq 2 ] ;then echo "this is a dir";fi


Le souci est que je n'arrive jamais à valider la condition... même si "$?" vaut deux cela ne fonctionne pas...

J'aimerais bien un coup de main :-)
A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

C'est normal, le test est fait sur le code retour de la commande "echo $?" et non sur celui de la fonction.

Pour ça il faut stocker ton code retour :

FIRST=$(_getstruct "$1")

retval=$?
echo ${retval}

if [ "${retval}" -eq 2 ] ;then echo "this is a dir";fi

1
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Ou tout simplement commenter le echo :

FIRST=$(_getstruct "/home/sacha")

#echo $?

if [ $? -eq 2 ] ;then echo "this is a dir";fi
0
Utilisateur anonyme
 
Salut,

En effet quelle quiche !

Je te remercie, à bientôt...
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Et tant qu'on y est, ta variable "$FIRST" ne sert à rien, lance directement ta fonction ;-\
0
Utilisateur anonyme
 
Oui merci... je ne suis pas encore à l'aise avec les retours peu "orthodoxes" du Shell ;-)
0