GNU 并行:带有顺序命令的 while 循环

GNU 并行:带有顺序命令的 while 循环

我需要对一系列主题运行一个 bash 脚本。我想构建一个 while 循环,同时对多个主题运行。但是,循环内的命令必须按顺序运行。

您能否确认这样的语法可以完成这项工作?

file="subjects.txt"

foo () {

command $subj etc
command 2 $subj etc
command 3 $subj etc
}

while read subj; do foo "$subj" &
done <$file

预先感谢您的帮助。

拉姆廷

答案1

file="subjects.txt"

foo () {
  subj="$1"
  command $subj etc
  command 2 $subj etc
  command 3 $subj etc
}
export -f foo

parallel foo :::: "$file"

它将并行运行 n 个作业(其中 n = CPU 线程数)。要更改此设置,请使用parallel -j10并行 10 个作业。

阅读第 1+2 章http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html(可从以下网址下载https://doi.org/10.5281/zenodo.1146014)。你的命令行会因此而喜欢你。

相关内容