在下面的脚本中,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
。
[
在 shell 模式中, char1 -
char2形式的构造]
匹配在 char1 和 char2 之间排序的字符;所以[1-34]
匹配1
、2
、3
和4
。
您可能想将for
循环更改为
for i in $(seq 1 $coil)
do
ph=all/ph${i}.nii
...
done