Bonjour à tous,

Je bloque depuis plusieurs jours sur un problème de boucle for. Je précise que j'ai cherché une réponse sur internet et sur le forum, mais je ne sais pas à quoi correspond (à quel nom ?) ce que je veux faire c'est difficile.

Je fais des boucles for qui marchent bien. Mon code 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
 
var1="HIPPOCAMPE_DROIT"
var2=hippo_d
var3=17
 
echo = ${var1}
 
for filename in 'cat list.txt' ; 
do fsl4.1-fslmaths ${filename}_conv/mri/aseg_raw.nii.gz -uthr ${var3} -thr ${var3} ${filename}_conv/rois/${filename}_${var2} ; 
done
 
var1="HIPPOCAMPE_GAUCHE"
var2=hippo_g
var3=16
echo = ${var1}
 
for filename in 'cat list.txt' ; 
do fsl4.1-fslmaths ${filename}_conv/mri/aseg_raw.nii.gz -uthr ${var3} -thr ${var3} ${filename}_conv/rois/${filename}_${var2} ; 
done
En fait comme chaque boucle appelle plusieurs variables (var1, var2 et var3), je fais des copié / coller et comme j'ai une centaine de boucle ça devient vite très très long.

Je cherche donc un moyen d'automatiser tout ça en faisant une sorte de boucle dans la boucle pour ne pas avoir à faire de copié coller de ma boucle for filename in 'cat list.txt'....

De façon alternative, j'ai pensé à créer un script qui s'appellerait ./script1 et qui contiendrait la boucle :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
for filename in 'cat list.txt' ; 
do fsl4.1-fslmaths ${filename}_conv/mri/aseg_raw.nii.gz -uthr ${var3} -thr ${var3} ${filename}_conv/rois/${filename}_${var2} ; 
done
et ensuite j'aurai pensé faire

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
 
var1="HIPPOCAMPE_DROIT"
var2=hippo_d
var3=17
 
echo = ${var1}
 
./script1
 
var1="HIPPOCAMPE_GAUCHE"
var2=hippo_g
var3=16
echo = ${var1}
 
./script1
Le problème c'est que cette option ne marche pas, parce que les variables que je définie ne sont pas prise en compte dans mon script ./script1.

C'est très dommage parce que cette solution aurait été pratique. En fait ça ne me dérange pas d'écrire à chaque fois la définition des variables var1, var2 et var3, le problème c'est que j'ai tellement de boucles qu'au final je ne peux pas me permettre de faire des copié / collé de ma boucle for à chaque fois (d'autant plus qu'en réalité j'ai plusieurs boucles for pour chaque valeur de var1, var2 et var3.

Je précise par ailleurs que mon triplé de variable var1, var2 et var3 sont toujours associés de la même manière.

Merci beaucoup pour votre aide,

Je me dis qu'il doit y avoir une solution simple. Toute idée est la bienvenue.

Bonne soirée,

Charles