for 루프가 4번 이상 반복을 실행하지 않는 이유는 무엇입니까?

for 루프가 4번 이상 반복을 실행하지 않는 이유는 무엇입니까?

아래 스크립트에서 for 루프는 unph4로만 출력됩니다. $coils의 값을 직접 작성해 보았는데 잘 되지 않았습니다. 다른 반복 값을 시도해 보았는데, 얻은 최대 값은 9였습니다. (반복 횟수는 꼭 한자리여야 하나요?)

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);

답변1

, , 및 all/ph[1-34].nii4개의 파일까지 일치하기 때문입니다 .all/ph1.niiall/ph2.niiall/ph3.niiall/ph4.nii

[쉘 모드에서 -char1 char2 형식의 구성은 ]char1과 char2 사이에 정렬된 문자와 일치하므로 , 및 와 [1-34]일치합니다 .1234

for루프를 다음으로 변경하고 싶을 수도 있습니다 .

for i in $(seq 1 $coil)
do
    ph=all/ph${i}.nii
    ...
done

관련 정보