Script shell

Fermé
Butters64 Messages postés 327 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 14 janvier 2013 - 18 févr. 2009 à 22:33
Butters64 Messages postés 327 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 14 janvier 2013 - 18 févr. 2009 à 23:33
Bonjour,

je débute en en langage de prog et mon programme shell doit tester une variable et ca marche pas.
Voici mon code c'est le plus simple

apres parse en perl d' un fichier xml

state1=$(echo $VAR | cut -d' ' -f1) #récupère le message afficher par le perl

if [ "$state1"="Unit"]; then
echo "ok"
fi

si je fais un echo de $state je vois afficher Unit

merci d'avance
A voir également:

8 réponses

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
18 févr. 2009 à 22:50
Salut,

Que contient "$VAR" ?

[ "$state1"="Unit"]
Il faut des espaces autour du signe "égale", ainsi qu'après le crochet ouvrant et avant le crochet fermant :
[ "$state1" = "Unit" ]
0
Butters64 Messages postés 327 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 14 janvier 2013 4
18 févr. 2009 à 22:57
ca contien Unit On 23.8

c'est l etat de la clim et la température
0
Butters64 Messages postés 327 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 14 janvier 2013 4
18 févr. 2009 à 23:03
la j' ai changé

je fais
state1=$(echo $VAR | cut -f2 -d' ') comme ca je récupère On

apres j ai mis les espace et rien ne change on dirait que ca rentre pas

si je fais [ "$state" != "On"]
ca marche
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
18 févr. 2009 à 23:05
Ben où est le problème alors ???

si je fais un echo de $state je vois afficher Unit
[tmpfs]$ VAR="Unit On 23.8"
[tmpfs]$ echo $VAR
Unit On 23.8
[tmpfs]$ echo $VAR | cut -d' ' -f1
Unit
[tmpfs]$
C'est normal non ?

Qu'est-ce qui ne marche pas ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Butters64 Messages postés 327 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 14 janvier 2013 4
18 févr. 2009 à 23:07
j ai un script perl qui affiche Unit On 23.8

avec le cut je récupère le On pour l etat de la clim et la je compare si l etat est On
le test if marche pas
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
18 févr. 2009 à 23:15
[tmpfs]$ cat foo.sh
#! /bin/sh

#set -xv

VAR="Unit On 23.8"
state=$(echo $VAR | cut -d' ' -f2)

if [ "$state" = "On" ]
then
echo "OK"
fi

[tmpfs]$ ./foo.sh
OK

[tmpfs]$
Je ne peux rien te dire de plus ;-\
0
Butters64 Messages postés 327 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 14 janvier 2013 4
18 févr. 2009 à 23:21
VAR=$(./Clim.pl)

state1=$(echo $VAR | cut -f2 -d' ') -------------> Récupère le On
Temp1=$(echo $VAR | cut -d' ' -f3)-------------> Récupère 23.8

if [ "$state1" = "On" ]; then

echo "ok"

fi

je fais ca et rien ne s'affiche.

Merci pour ton aide
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
18 févr. 2009 à 23:23
state1=$(echo $VAR | cut -f2 -d' ') 
Fais le contraire (-d ' ' -f2) ça devrait aller mieux ;-))
0
Butters64 Messages postés 327 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 14 janvier 2013 4
18 févr. 2009 à 23:33
je vais tester merci pour tout
0