Problème script erreur

Fermé
doberman - 15 déc. 2007 à 20:59
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 16 déc. 2007 à 09:10
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

1 réponse

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
16 déc. 2007 à 09:10
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 :
sed -i.bak "/$groupe/ s/.*/&;$username/" group
sed -i.bak '/'"$groupe"'/ s/.*/&;'"$username"'/' group
;-))
0