# Fonction dans script valeur différente !

**URL:** <https://www.debian-fr.org/t/fonction-dans-script-valeur-differente/34511>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 3:42 UTC](https://www.debian-fr.org/t/fonction-dans-script-valeur-differente/34511 "2016-02-21T03:42:09Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![\_seb](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/_/90db22/32.png) [@\_seb](https://www.debian-fr.org/u/_seb)\
**Post date:** [Février 21, 2016, 3:42 UTC](https://www.debian-fr.org/t/fonction-dans-script-valeur-differente/34511/1 "2016-02-21T03:42:09Z")

</div>

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 :

```auto
_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 «&nbsp;return 0&nbsp;» de la fonction quand un login existe au lieu du «&nbsp;return 1&nbsp;» 😮 ![:017](https://www.debian-fr.org/uploads/default/original/1X/7bbea83f89515ab7c7a738dddb86c4d4f140bd13.gif "reflechit")

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:](https://www.debian-fr.org/uploads/default/original/1X/899b2c331f8cc02517f77948602974610a95f952.gif "Whistle")

Merci

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 3:42 UTC](https://www.debian-fr.org/t/fonction-dans-script-valeur-differente/34511/2 "2016-02-21T03:42:10Z")

</div>

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]

---

<div class="post-metadata">

**Author:** ![\_seb](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/_/90db22/32.png) [@\_seb](https://www.debian-fr.org/u/_seb)\
**Post date:** [Février 21, 2016, 3:42 UTC](https://www.debian-fr.org/t/fonction-dans-script-valeur-differente/34511/3 "2016-02-21T03:42:11Z")

</div>

![:006](https://www.debian-fr.org/uploads/default/original/1X/924eb3db8bedad6a0d333b02031d3c6a9af9d9c5.gif "salut")

Bien vue ![:007](https://www.debian-fr.org/uploads/default/original/1X/e72d3b45191f9b2363aa21bfae6f42497bc4042b.gif "yeux-coeur") 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.
