Script Shell sous Ubuntu

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 ?
Configuration: Windows XP
Firefox 2.0.0.20

2 réponses

  1. Modérateur
    Salut,
    if [ "$(grep "^${nom}:" /etc/passwd)" = "" ]; then
    useradd $nom
    else
    echo "Cet utilisateur existe déjà"
    fi 
    0
    1. 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