以下のスクリプトでは、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].nii
4つのファイルまで一致するためです。all/ph1.nii
all/ph2.nii
all/ph3.nii
all/ph4.nii
[
シェルモードでは、-
char1 char2形式の設定は]
char1とchar2の間にソートされた文字と一致するため、およびと[1-34]
一致します。1
2
3
4
for
ループを次に変更したい場合があります。
for i in $(seq 1 $coil)
do
ph=all/ph${i}.nii
...
done