我正在尝试使用不同参数并行化粒子模拟以节省一些时间。因此,我想使用GNUparallel
为不同的参数运行bash脚本。脚本读取文件然后执行模拟,例如:
$bash script <<< input file
但是: -
$cd ~/parameter_files ls | parallel bash script <<< {}
根本不起作用。我是Linux和GNUparallel的新手,所以希望有人可以提供帮助。
答案 0 :(得分:2)
你几乎是对的,在命令
周围使用双引号ls | parallel "bash script <<< {}"
否则,此处的字符串<<<
会将输入提供给parallel
命令而不是每个bash script
命令
我发现这个用例非常不寻常,因为这意味着基本上你的脚本正在读取文件名 string 。如果您只想将文件作为参数传递给脚本,则可以使用
ls | parallel bash script
或者如果您想使用标准输入
传递文件的内容ls | parallel "bash script < {}"
答案 1 :(得分:0)
您可以在parallel
目录的每个文件中使用~/parameter_files
:
find ~/parameter_files -maxdepth 1 -type f -print0 | parallel -0 bash ../script
find
命令查找~/parameter_files
目录中的所有文件并返回NUL终止parallel -0 bash ...
将每个文件名提供给您的shell脚本并执行它。