我需要对一系列主题运行一个 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)。你的命令行会因此而喜欢你。