Salut,
voilà j’essaie vainement de créer un simple script bash qui vérifie si le nom de l’utilisateur existe dans le fichier /etc/passwd si oui alors il continue à lancer le script et sinon il s’arrête mais je n’y arrive pas.
[code]#!/bin/sh
echo -n "Nom de votre utilisateur? : "
read USER
VERIF=grep $USER /etc/passwd | cut -d: -f1
if [ ! -e “$VERIF” ]; then
echo "L’utilisateur $USER n’existe pas, vous devez d’abord le créer!!"
else [ -e “$VERIF” ];
echo “L’utilisateur $USER existe bien…lancement du script…”
[…][/code]
Voilà, si quelqu’un a une idée…car je ne sais pas si c’est bien la commande qu’il faut pour tester si la valeur est vrai ou fausse.
[quote=“dexmon”]Salut misterFreez,
pourquoi le > /dev/null ?
et que veut dire ceci [ $? -ne 0 ] ?[/quote]
J’exécute le grep donc s’il trouve l’utilisateur il va afficher la ligne du passwd en question. Ce qui n’est pas forcément souhaitable ne serais-ce que d’un point de vu esthétique.
$? contient à tout moment la valeur de retour renvoyé par la dernière commande exécutée. Si grep trouve l’utilisateur il renvoie 0, si non il renvoie 1.
Je ne connais pas ce type de condition, je sais pas si c’est bien ou pas.
[quote=“MisterFreez”][quote=“dexmon”]Salut misterFreez,
pourquoi le > /dev/null ?
et que veut dire ceci [ $? -ne 0 ] ?[/quote]
J’exécute le grep donc s’il trouve l’utilisateur il va afficher la ligne du passwd en question. Ce qui n’est pas forcément souhaitable ne serais-ce que d’un point de vu esthétique.
$? contient à tout moment la valeur de retour renvoyé par la dernière commande exécutée. Si grep trouve l’utilisateur il renvoie 0, si non il renvoie 1.
Je ne connais pas ce type de condition, je sais pas si c’est bien ou pas.[/quote]
ta commande fonctionne bien mais le problème c’est que supposons que mon utilisateur jonydepp existe et que je tappe jony il me dit qu’il existe alors que c’est faux.
Comment résoudre ce problème ?
if [ $? -ne 0 ]; then
echo "L’utilisateur $USER n’existe pas, vous devez d’abord le créer!!"
exit 1
else
echo "L’utilisateur $USER existe bien…lancement du script…"
fi[/code]
On indique que $USER doit se trouver en tout début de ligne et être immédiatement précédé de :
if [ $? -ne 0 ]; then
echo “L’utilisateur $USER n’existe pas, vous devez d’abord le créer!!”
exit 1
else
echo “L’utilisateur $USER existe bien…lancement du script…”
fi[/code]
On indique que $USER doit se trouver en tout début de ligne et être immédiatement précédé de : [/quote]
[quote=“fran.b”]Comme je te l’ai dit sur la DUF, l’option -q de grep t’évite la redirection > /dev/null:
if grep -q “^$USER:” /etc/passwd ; then[/quote]
Merci fran,
je n’y avais pas penser.
Tant que je vous ai sous la main tout les deux, a quoi servent les commandes ‘fi’ , ‘exit 1’ et ‘clear’ ?
car dans le man il n’y a pas grand chose pour ‘fi’.
Je retrouve souvent ces commandes dans les script bash.