Rechercher : dans
Par :

Script Shell sous Ubuntu

Dernière réponse le 18 mai 2009 à 15:59:27 XesKaicho, le 18 mai 2009 à 14:08:00 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Script Shell sous Ubuntu » dans :
Exécuter un script shell Voir Exécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...

1

jipicy, le 18 mai 2009 à 14:31:45

Salut,

if [ "$(grep "^${nom}:" /etc/passwd)" = "" ]; then
useradd $nom
else
echo "Cet utilisateur existe déjà"
fi 
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

2

 warr, le 18 mai 2009 à 15:59:27

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é.

Répondre à warr