2017-01-17 81 views
0

我有一个迭代数组的问题来打开一个程序的多个实例。当我运行下面的例子中,我得到fslview的三个实例:mac shell脚本循环在后台运行忽略

arr=(bold_rs_fabio_precuneus_mask.nii.gz mask.nii.gz bold_rs_fabio.nii.gz) 
fslview ${arr[0]} & 
fslview ${arr[1]} & 
fslview ${arr[2]} & 

在这个例子中,我只得到fslview的实例与加载的第一个文件:

arr=(bold_rs_fabio_precuneus_mask.nii.gz mask.nii.gz 
bold_rs_fabio.nii.gz) 
for f in $arr 
do 
    fslview $f & 
done 

什么我在第二失踪例?

在此先感谢 马丁

回答

0

也许你应该开始在循环中一个新的外壳:

arr=(bold_rs_fabio_precuneus_mask.nii.gz mask.nii.gz bold_rs_fabio.nii.gz) 
for f in $arr 
do 
    (fslview $f &) 
done 

或者尝试建立一个命令行实际上是在并行

arr=(bold_rs_fabio_precuneus_mask.nii.gz mask.nii.gz bold_rs_fabio.nii.gz) 
cmd="" 
for f in $arr 
do 
    cmd="$cmd fslview $f &" 
done 
#then let it run 
$cmd 
运行的进程

希望它有帮助

+0

我很好奇为什么这使得一个differenc电子 - 你愿意解释一下吗? –

+0

我猜'&'适用于给定shell中的命令行......我不完全确定它是如何用于OSX的。只是想帮助。 –

+0

嗨,马克,感谢您的想法。尽管没有做出改变。我在mac automator应用程序中使用此脚本。也许有人知道一个解决方法? – gimba