Test de if dans un script bash

Résolu/Fermé
hbcrayon Messages postés 18 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 21 novembre 2015 - 18 juin 2009 à 12:43
 freeman - 24 févr. 2015 à 14:57
Bonjour,

Voilà mon script bash en un peu simplifié :

#!/bin/bash

... definition de quelques paramètres ...

for typm in phys ; do

for champ in ro vp vs ; do

#valeurs pour dessiner les champs
#ro
if [""$champ"="ro""]; then \x2MIN=900 \x2MAX=1600 ; fi
#vp
if [""$champ"="vp""]; then \x2MIN=1400 \x2MAX=3300 ; fi
#vs
if [""$champ"="vs""]; then \x2MIN=-10000 \x2MAX=2300 ; fi

... differentes commandes qui n'ont rien avoir avec le problème...

psgraph n1=$Prof d1=$dProf f1=$FProf n2=$niter style=seismic \
d1num=100 d2num=200 f1num=0 x2beg=$x2MIN x2end=$x2MAX \
label1="Profondeur" label2="Valeur champ" title="Model "$typm" champ "$champ \
wbox=6 hbox=10 linecolor=red,black linewidth=1.5,0.2 \
grid1=solid grid2=solid gridwidth=0.1 \
< fichier_entree.bin > fichier_sortie.eps

done
done

Mon problème ? C'est que les tests if ne fonctionne pas. Le terminal me renvoie :

./model_images_concat.sh: line 18: [ro=ro] : commande introuvable
./model_images_concat.sh: line 20: [ro=vp] : commande introuvable
./model_images_concat.sh: line 22: [ro=vs] : commande introuvable

./model_images_concat.sh: line 18: [vp=ro] : commande introuvable
./model_images_concat.sh: line 20: [vp=vp] : commande introuvable
./model_images_concat.sh: line 22: [vp=vs] : commande introuvable

./model_images_concat.sh: line 18: [vs=ro] : commande introuvable
./model_images_concat.sh: line 20: [vs=vp] : commande introuvable
./model_images_concat.sh: line 22: [vs=vs] : commande introuvable

et du coup dans le psgraph x2beg et x2end s'initalise automatiquement aux valeurs min et max de mes champs, ce qui fait des dessins super moches !!!!

Où est-ce que je me trompe ? Parce que du coup ça veut dire que l'ordinateur ne comprend pas la commande mais il comprend le test ($champ=ro ou vp ou vs)...

Merci,
HBcrayon
A voir également:

1 réponse

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
18 juin 2009 à 13:13
Salut,

La bonne syntaxe est comme suit :
if [ "$champ" = "ro" ]; then...
Il faut un espace après le crochet ouvrant et avant le crochet fermant, un espace avant et après le signe égale ( = ), quant aux guillemets il en faut autour des variables et autour de la valeur de comparaison, mais pas autour de l'expression dans son ensemble.
2
hbcrayon Messages postés 18 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 21 novembre 2015
18 juin 2009 à 14:01
Merci beaucoup...
Je n'avais fait de bash et je suis vraiment contente d'avoir eu une réponse aussi rapide et efficace !!

Bonne journée,
HBcrayon
0
Génial !!!
0