Script shell qui marche pas

Résolu/Fermé
Sirius911 Messages postés 269 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 14 mars 2017 - 13 févr. 2009 à 19:28
Sirius911 Messages postés 269 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 14 mars 2017 - 13 févr. 2009 à 21:12
Bonjour,
Voici un petit script qui ne marche pas
il doit y avoir une erreur toute bete de syntaxe mais je trouve pas
merci de m'aider

#! /bin/sh
#
# Script pour savoir si l'utilisateur sandrine est logger
#
# Written by Sirius911
#            
clear

var2="$(who | grep 'sandrine' | cut -c -8)"


echo "var2 = '"$var2"'"
if [ $var2 = "sandrine" ]
then
	echo "sandrine detectée !!"
else
	echo "sandrine absente !!"
fi
exit 0


il me répond :
./essais: line 11: [: = : unary operator expected

et la fonction if ne fonctionne pas

merci


A voir également:

4 réponses

TLa Messages postés 57 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 14 février 2009 12
13 févr. 2009 à 20:14
Bonjour,

man bash :

#! /bin/sh
#
# Script pour savoir si l'utilisateur sandrine est logger
#
# Written by Sirius911
#
clear

var2="$(who | grep 'sandrine' | cut -c -8)"

echo "var2 = '"$var2"'"
if [[ $var2 == "sandrine" ]]
then
echo "sandrine detectée !!"
else
echo "sandrine absente !!"
fi
exit 0
1
Je crois que c'est ton if qui pose problème d'où le fait que tu ne passe pas dans la boucle.
Il me semble d'après mes souvenirs que l'opérateur = c'est pour l'affectation d'une variable. Pour l'égalite c'est -eq.
D'autre part, je n'aurai pas mis autant de guillemets et quote pour vérifier l'affectation de var2...
Je ne suis vraiment pas sure mes souvenirs date un peu...
0
snow_frog Messages postés 216 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 juin 2020 139
13 févr. 2009 à 20:30
enleve seulemnt l'espace dans le shi-bang ;)
#!/bin/sh
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
13 févr. 2009 à 20:40
Salut,

Non ça n'a rien à voir, les 2 syntaxes sont autorisées...

L'erreur vient du fait que dans le test avec crochets simples "[ ... ]", il faut absolument quoter les variables :
[ "var" = "blabla" ]
ou comme cela a été dit dans la 1ère réponse utiliser les crochets doubles (sans l'espace entre les 2 crochets ouvrants, ici c'est à cause de l'interprétation qu'en fait CCM ;-(( ) :
[ [ var = blabla ]]

;-))
0
Sirius911 Messages postés 269 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 14 mars 2017 10
13 févr. 2009 à 21:12
merci à tous
nickel ça marche avec les doubles crochets

j'en profite pour vous demander comment je peux rajouter dans mon script
un talk aline "Sandrine est connectée"

je vois pas comment le faire

je voudrai mettre ensuite le script dans le cron pour avertir que sandrine est connectée

merci
0