Problème script erreur
doberman
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
Bonjour,
j'ai deux erreur sur mon script que je ne comprend pas du tout! et du coup rien ne marche qi quelqu'un avait la gentillesse de m'éclairer.
voici les erreurs:
entrer le login de l'utilisateur souhaite ?thib
[: 35: =: argument expected
thib
entrer le groupe de l'utilisateur? thib
[: 58: -1: unexpected operator
et voici mon code:
# !/bin/bash
IFS='
'
var=`id -u`
echo $var
if [ $var != "0" ];
then
echo "Il vous faut passer en root"
exit 0
fi
read -p "entrer le login de l'utilisateur souhaite ?" username
if [ $username = "x" ];
then
echo "Vous devez donner un nom à l'utilisateur"
exit 0
fi
echo `grep $username ./passwd | cut -d: -f 1 >> userdoublon`
user=`cat userdoublon`
echo $user
echo `rm ./userdoublon`
while [ $username = $user ]
do
read -p "ce login est deja utilisé veuillez reitere " username
if [ $username = "x" ];
then
echo "entrer un login valide"
fi
echo `grep $username ./passwd | cut -d: -f 1 >> userdoublon`
user=`cat userdoublon`
echo `rm ./userdoublon`
done
echo $username
read -p "entrer le groupe de l'utilisateur? " groupe
while [ $flaggroup = -1 ]
do
if test $groupe = secretaire
then echo "Vous êtes dans le groupe secretaire"
flaggroup=1
elif test $groupe = toto
then echo "Vous êtes dans le groupe toto"
flaggroup=1
elif test $groupe = titi
then echo "Vous êtes dans le groupe titi"
flaggroup=1
elif test $groupe = prod
then echo "Vous êtes dans dans le groupe prod"
flaggroup=1
else read -p "le groupe que vous avez rentre ne fais pas partie des groupes, reitere " groupe
flaggroup=-1
echo "$flaggroup"
fi
done
if [ -w group ];
then
echo `sed -i.bak '/$groupe/ s/.*/&;$username/ group'
else
echo `echo "secretaire:x:1000:" >> group`
echo `echo "toto:x:2000:" >> group`
echo `echo "titi:x:3000:" >> group`
echo `echo "prod:x:4000:" >> group`
echo `sed -i.bak '/$groupe/ s/.*/&;$username/ group'
fi
merci d'avance
j'ai deux erreur sur mon script que je ne comprend pas du tout! et du coup rien ne marche qi quelqu'un avait la gentillesse de m'éclairer.
voici les erreurs:
entrer le login de l'utilisateur souhaite ?thib
[: 35: =: argument expected
thib
entrer le groupe de l'utilisateur? thib
[: 58: -1: unexpected operator
et voici mon code:
# !/bin/bash
IFS='
'
var=`id -u`
echo $var
if [ $var != "0" ];
then
echo "Il vous faut passer en root"
exit 0
fi
read -p "entrer le login de l'utilisateur souhaite ?" username
if [ $username = "x" ];
then
echo "Vous devez donner un nom à l'utilisateur"
exit 0
fi
echo `grep $username ./passwd | cut -d: -f 1 >> userdoublon`
user=`cat userdoublon`
echo $user
echo `rm ./userdoublon`
while [ $username = $user ]
do
read -p "ce login est deja utilisé veuillez reitere " username
if [ $username = "x" ];
then
echo "entrer un login valide"
fi
echo `grep $username ./passwd | cut -d: -f 1 >> userdoublon`
user=`cat userdoublon`
echo `rm ./userdoublon`
done
echo $username
read -p "entrer le groupe de l'utilisateur? " groupe
while [ $flaggroup = -1 ]
do
if test $groupe = secretaire
then echo "Vous êtes dans le groupe secretaire"
flaggroup=1
elif test $groupe = toto
then echo "Vous êtes dans le groupe toto"
flaggroup=1
elif test $groupe = titi
then echo "Vous êtes dans le groupe titi"
flaggroup=1
elif test $groupe = prod
then echo "Vous êtes dans dans le groupe prod"
flaggroup=1
else read -p "le groupe que vous avez rentre ne fais pas partie des groupes, reitere " groupe
flaggroup=-1
echo "$flaggroup"
fi
done
if [ -w group ];
then
echo `sed -i.bak '/$groupe/ s/.*/&;$username/ group'
else
echo `echo "secretaire:x:1000:" >> group`
echo `echo "toto:x:2000:" >> group`
echo `echo "titi:x:3000:" >> group`
echo `echo "prod:x:4000:" >> group`
echo `sed -i.bak '/$groupe/ s/.*/&;$username/ group'
fi
merci d'avance
A voir également:
- Problème script erreur
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
1 réponse
Salut,
echo `sed -i.bak '/$groupe/ s/.*/&;$username/ group'
Déjà le "echo" ne sert à rien ! A moins que tu ne veuilles juste qu'afficher le résultat sans modification du fichier afin d'effectuer un contrôle de la commande...
Ensuite si tu veux que cette commande ait des chances d'aboutir, il faut quoter autrement afin que les variables soient interprétées par le shell :
echo `sed -i.bak '/$groupe/ s/.*/&;$username/ group'
Déjà le "echo" ne sert à rien ! A moins que tu ne veuilles juste qu'afficher le résultat sans modification du fichier afin d'effectuer un contrôle de la commande...
Ensuite si tu veux que cette commande ait des chances d'aboutir, il faut quoter autrement afin que les variables soient interprétées par le shell :
sed -i.bak "/$groupe/ s/.*/&;$username/" group sed -i.bak '/'"$groupe"'/ s/.*/&;'"$username"'/' group;-))