Probleme shell
Résolu
Bonjour,
je suis nouveau en programmation et en programmation shell.
Voici mon probleme:
"Ecrire un programme shell connu prenant en argument un nom d’utilisateur qui
affiche 0 s’il est enregistré dans le fichier pass, 1 sinon."
Voici mon programme mais qui ne fonctionne pas, il affiche sans cesse erreur:
#!/bin/bash
cd /etc/
if [ "grep $1 passwd" = '0' ]
then
echo "L'utilisateur existe"
elif [ "grep $1 passwd" = '1' ]
then
echo "L'utilisateur n'existe pas"
else
echo "Erreur"
fi
Pouvez vous me dire ce qui ne vas pas?
Merci.
je suis nouveau en programmation et en programmation shell.
Voici mon probleme:
"Ecrire un programme shell connu prenant en argument un nom d’utilisateur qui
affiche 0 s’il est enregistré dans le fichier pass, 1 sinon."
Voici mon programme mais qui ne fonctionne pas, il affiche sans cesse erreur:
#!/bin/bash
cd /etc/
if [ "grep $1 passwd" = '0' ]
then
echo "L'utilisateur existe"
elif [ "grep $1 passwd" = '1' ]
then
echo "L'utilisateur n'existe pas"
else
echo "Erreur"
fi
Pouvez vous me dire ce qui ne vas pas?
Merci.
Configuration: Linux Firefox 3.5.5
2 réponses
-
ModérateurSalut,
Déjà quand on veut récupérer le résultat d'une commande la syntaxe est la suivante :
"$(commande)"
Ensuite dans ton cas ce n'est pas le contenu qui nous intéresse mais le code retour, à savoir vrai (0) ou faux (1).
Dans ce cas il faut comparer le code retour de ta commande qui se trouve dans la variable "$?" après l'exécution de ladite commande.
Ce qui donnerait :
cd /etc/ grep "$1" passwd code_retour="$?" if [ "$code_retour" = 0 ] then echo "L'utilisateur existe" else echo "L'utilisateur n'existe pas" fi
-
Ok, merci pour les conseils, cela fonctionne.