Script Shell sous Ubuntu
XesKaicho
Messages postés
1
Statut
Membre
-
warr -
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 ?
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:
- Script Shell sous Ubuntu
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Ubuntu 32 bits - Télécharger - Systèmes d'exploitation
- Ghost script - Télécharger - Polices de caractères
- Mas script - Accueil - Windows
2 réponses
Salut,
if [ "$(grep "^${nom}:" /etc/passwd)" = "" ]; then
useradd $nom
else
echo "Cet utilisateur existe déjà"
fi
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é.
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é.