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

2 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Ou tout simplement commenter le echo :

      FIRST=$(_getstruct "/home/sacha")
      
      #echo $?
      
      if [ $? -eq 2 ] ;then echo "this is a dir";fi
      0
  2. Utilisateur anonyme
     
    Salut,

    En effet quelle quiche !

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