Script shell

Butters64 Messages postés 341 Statut Membre -  
Butters64 Messages postés 341 Statut Membre -
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 41342 Statut Modérateur 4 896
 
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 341 Statut Membre 4
 
ca contien Unit On 23.8

c'est l etat de la clim et la température
0
Butters64 Messages postés 341 Statut Membre 4
 
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 41342 Statut Modérateur 4 896
 
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 341 Statut Membre 4
 
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 41342 Statut Modérateur 4 896
 
[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 341 Statut Membre 4
 
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 41342 Statut Modérateur 4 896
 
state1=$(echo $VAR | cut -f2 -d' ') 
Fais le contraire (-d ' ' -f2) ça devrait aller mieux ;-))
0
Butters64 Messages postés 341 Statut Membre 4
 
je vais tester merci pour tout
0