Bonjour à tous !

Voici le topo : J'ai un programme qui tourne, prenant en compte des paramêtres d'imput étant stockés dans un fichier .par. Mon étude consiste à modifier ces paramètres et voir ce que ça va donner sur le résultat final. J'ai pour cela crée un script bash qui dans une boucle lit la valeur des paramètres dans un fichier de données, modifie le fichier de paramètres d'imput de mon programme, puis lance le programme, et ainsi de suite jusqu'à ce qu'il ai fait toutes les lignes du fichier de données, soit tous les paramètres que je voulais tester.

Voici le script Bash faisant tout ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/bash
 
IMPUTFILE="Lambda.par"
PARFILE="dun_explo.par.mmm"
 
echo "Valeurs sous la forme : Dep Trans Truc Scale" > scale.txt
echo " " >> scale.txt
 
while IFS=' ' read Trans Dep
do
	echo $Trans
	echo $Dep
 
	##Changement du fichier PAR
 
	varline=$(cat $PARFILE | grep "Lambda_C =")
	var1="Lambda_C = ${Dep}"
	sed -i.bak "s/^${varline}.*/${var1}/" ${PARFILE}
	#sed -i "27s/${varline}/${var1}/" ${PARFILE}
 
	varline2=$(cat $PARFILE | grep "Lambda_T =")
	var2="Lambda_T = ${Trans}"
	sed -i.bak "s/^${varline2}.*/${var2}/" ${PARFILE}
	#sed -i "30s/${varline2}/${var2}/" ${PARFILE}
 
	##Lancement de l'analyse lineaire
 
	./run.bash
	./matlab.bash 
 
	cd exp_gvmin_000
	VARSAVE=$(head -1 res_save.txt)
	cd ..
	echo "$Dep $Trans $VARSAVE" >> scale.txt
 
done < $IMPUTFILE
Le run.bash est un autre script faisant tourner le programme, et le matlab.bash est un script dont la fonction principale est de lancer matlab, de faire un calcul et de sauvegarder les résultats.
Le problème : une seule itération se fait, puis le script s'arrête. A noter que lorsque je commente la ligne , toutes les itérations se font (une itération correspondant à une ligne de mon fichier d'imput dans lequel sont stockées toutes les valeurs des paramètres que je veux tester).

Le script matlab.bash est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#Debut manip matlab
 echo ------------------------
 sed s/AAAA/$gvmin/ $SIGMAT > $rep/$SIGMAT
 cp movav.m $rep/.
 cp disp_fun.m $rep/.
 cp twocol.pl $rep/.
 cd $rep
 pwd
 echo ------------------------
 
 gunzip SIGMA.data.gz
 
 #matlab -nojvm -nosplash -r sigm_add2
 #matlab -nodesktop -nosplash -r $SIGMAT
 matlab -nodesktop -nosplash -r sigma_fit
 
# cp Growth_rate*.png ../RES_SIGMA/.
 
 head -1 sig_save.txt > res_save.txt
 
 cat ../RES_SIGMA/res_sigma.txt res_save.txt > ../RES_SIGMA/tmp.txt
# rm sig_save.txt
 rm ../RES_SIGMA/res_sigma.txt
 mv ../RES_SIGMA/tmp.txt ../RES_SIGMA/res_sigma.txt
 gzip SIGMA.data
 cd ..
 
done
Autrement dit, c'est un script bash commun avec la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
matlab -nodesktop -nosplash -r sigma_fit
qui lance un script matlab de calcul.
Tout tourne bien, et on arrive bien à la fin de la première itération du premier script bash puisque les commandes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
cd exp_gvmin_000
	VARSAVE=$(head -1 res_save.txt)
	cd ..
	echo "$Dep $Trans $VARSAVE" >> scale.txt
s'effectuent comme il faut. Mais tout s'arrête ensuite...

Une idée ?