Fonction dans script valeur différente !

Bonjour,

Dans un script BASH, je teste si un login existe dans un fichier. Pour cela j’utilise une fonction que j’appelle quand j’en ai besoin :

_LOGIN=$(/bin/grep -i -w $1 fichier_user | cut -d ' ' -f1)

CHECK_LOGIN()
{
        if [  "$_LOGIN" = "$1" ] ; then
                # Le login existe
                return 1
        else
                # Le login n'existe pas
                return 0
        fi
}

CHECK_LOGIN
if [ $? == 0 ] ; then
echo "L'utilisateur n'existe pas"
else
echo "L'utilisateur existe déjà !!"
fi

Le problème est que je passe dans le cas « return 0 » de la fonction quand un login existe au lieu du « return 1 » :open_mouth: :017

Par contre si je n’utilise pas la fonction le résultat est correct je rentre bien dans la cas 1 = Existe :

if [ "$_LOGIN" = "$1" ] ; then # Le login existe echo "L'utilisateur existe déjà !!" else # Le login n'existe pas echo "L'utilisateur n'existe pas" fi

Une idée :whistle:

Merci

Le $1 dans la fonction correspond aux paramètres que tu passes à celle-ci, et non pas au $1 global du script. Or, tu ne passes aucun paramètre à la fonction lors de son appel, donc son $1 est vide.

[code]_LOGIN=$(/bin/grep -i -w $1 fichier_user | cut -d ’ ’ -f1)

CHECK_LOGIN()
{
if [ “$_LOGIN” = “$1” ] ; then
# Le login existe
return 1
else
# Le login n’existe pas
return 0
fi
}

on passe le $1 global du script en paramètre de la fonction

CHECK_LOGIN "$1"
if [ $? == 0 ] ; then
echo "L’utilisateur n’existe pas"
else
echo "L’utilisateur existe déjà !!"
fi[/code]

:006

Bien vue :007 Et oui je ne passé pas le paramètre du script à la fonction !

Je croyais que le $1 est global dans un script+fonctions…

Merci beaucoup.