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

おすすめ記事