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 -
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
il me répond :
./essais: line 11: [: = : unary operator expected
et la fonction if ne fonctionne pas
merci
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:
- Script shell qui marche pas
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
4 réponses
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
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
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...
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...
enleve seulemnt l'espace dans le shi-bang ;)
#!/bin/sh
#!/bin/sh
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 ]]
;-))
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 ]]
;-))