Script Shell sous Ubuntu

Fermé
XesKaicho Messages postés 1 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 18 mai 2009 - 18 mai 2009 à 14:08
 warr - 18 mai 2009 à 15:59
Bonjour,
je suis en train de faire un script pour la création d'utilisateur sous linux en shell mais je rencontre un problème lors de son exécution.

Voici un passage du script:

echo -n "veuillez entrer le nom de l'utilisateur a créer : "
read nom

if [ "grep '^$nom:' /etc/passwd" = "" ]; then
useradd $nom
else
echo "Cet utilisateur existe déjà"
fi

Donc normalement si l'exécution de la commande "grep" donne un ensemble vide, il devrait aller dans le "if" et dans le cas contraire donc si l'utilisateur existe déjà il irait dans le "else".

Mais dans mon cas il ne tiens pas compte du "if" et rentre directement dans le "else" à chaque fois, pourtant la commande "grep" fonctionne.

Quelqu'un aurait-il une solution s'il vous plait ?
A voir également:

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
18 mai 2009 à 14:31
Salut,
if [ "$(grep "^${nom}:" /etc/passwd)" = "" ]; then
useradd $nom
else
echo "Cet utilisateur existe déjà"
fi 
0
Salut,

tu ne peux pas plutot essayer de verifier le code de retour de grep ?
Je m'explique :

tu fais ton grep

grep '^$nom:' /etc/passwd"

et ensuite tu fais un test sur la variable $? qui contient le code de retour de la derniere commande qui s'est executée.
dans ton cas, si $?=0 alors grep a trouvé quelque chose , si $?=1 alors il n'a rien trouvé.
0