Rechercher : dans
Par :

Test de if dans un script bash

Dernière réponse le 18 jun 2009 à 14:01:44 hbcrayon, le 18 jun 2009 à 12:43:14 
 Signaler ce message aux modérateurs

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

Configuration: Linux Fedora
Firefox 3.5

Meilleures réponses pour « Test de if dans un script bash » dans :
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
Bash - Les paramètres VoirIntroduction Les paramètres positionnels Exemple 1 Les paramètres spéciaux Exemple 2 Initialiser des paramètres - La commande "set" - Exemples - La commande "shift" - Exemple 3 Introduction Il est possible de fournir à un script,...

1

jipicy, le 18 jun 2009 à 13:13:32

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.
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

2

 hbcrayon, le 18 jun 2009 à 14:01:44

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

Répondre à hbcrayon