Script shell qui marche pas

Résolu
Sirius911 Messages postés 269 Date d'inscription   Statut Membre Dernière intervention   -  
Sirius911 Messages postés 269 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   12
 
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
ela
 
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   Statut Membre Dernière intervention   139
 
enleve seulemnt l'espace dans le shi-bang ;)
#!/bin/sh
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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   Statut Membre Dernière intervention   10
 
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