Script Shell sous Ubuntu

XesKaicho Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
 warr -
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   Statut Modérateur Dernière intervention   4 896
 
Salut,
if [ "$(grep "^${nom}:" /etc/passwd)" = "" ]; then
useradd $nom
else
echo "Cet utilisateur existe déjà"
fi 
0
warr
 
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