Por que o loop for não é executado por mais de 4 iterações?

0

No script a seguir, o loop for só gera até unph4. Eu tentei escrever o valor de $ bobinas diretamente, mas não funciona tão bem. Eu tentei outros valores de iteração para ver o máximo que estou recebendo é 9 (o número de iteração tem que ser um único dígito?)

coil=34;

bash_command = sprintf(['for ph in all/ph[1-$coil].nii\n' ...
'do\n' ...
'   base='basename $ph';\n' ...
'   dir='dirname $ph';\n' ...
'   mag=$dir/"mag"${base:2};\n' ...
'   unph="unph"${base:2};\n' ...
'   prelude -a $mag -p $ph -u $unph -n 12&\n' ...
'done\n' ...
'wait\n' ...
'gunzip -f unph*.gz\n']);

unix(bash_command);
    
por A. De 22.11.2018 / 01:46

1 resposta

2

Porque all/ph[1-34].nii corresponde no máximo a 4 arquivos: all/ph1.nii , all/ph2.nii , all/ph3.nii e all/ph4.nii .

Nos padrões de shell, uma construção do formato [ char1 - char2 ] corresponde aos caracteres que classificam entre char1 e char2; então [1-34] corresponde a 1 , 2 , 3 e 4 .

Você pode querer alterar o loop for para

for i in $(seq 1 $coil)
do
    ph=all/ph${i}.nii
    ...
done
    
por 22.11.2018 / 01:54

Tags