Test de if dans un script bash
Résolu
hbcrayon
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
freeman -
freeman -
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
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:
- Test de if dans un script bash
- Test performance pc - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
- Test steam deck oled - Guide
- Test composant pc - Guide
- Script vidéo youtube - Guide
1 réponse
Salut,
La bonne syntaxe est comme suit :
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.
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