如何使用GNU parallel来并行化带有参数的shell脚本?

时间:2019-02-19 01:01:13

标签: bash matlab terminal parallel-processing

我是bash脚本的新手。我有一个Shell脚本,该脚本运行多个功能以通过终端在Matlab中进行纵向图像处理。我想在终端中并行处理。

以下是其运行方式的简短示例:

./script.sh *.nii -surface -m /Applications/MATLAB_R2018b.app/bin/matlab

*.nii是指在不同时间从单个对象拍摄的图像(即subj1img1 subj1img2 subj3img3)。在我的情况下,每个主题有3张图像。因此,在每次运行中,脚本都会遍历单个主题的所有图像。

我想并行化此过程,以便可以同时针对多个主题运行此脚本。以我的少量经验并行阅读GNU,我无法弄清实现该过程所需编写的代码。如果有人有任何建议,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以使用&在for循环中在后台启动它们,如下所示:

for f in *.nii
do
  ./script.sh "$f" -surface -m /Applications/MATLAB_R2018b.app/bin/matlab &
done

答案 1 :(得分:1)

parallel ./script.sh {} -surface -m /Applications/MATLAB_R2018b.app/bin/matlab ::: *.nii 
相关问题