【问题标题】:bash parallel run multiple times with shell variablesbash 使用 shell 变量并行运行多次
【发布时间】:2018-12-15 21:23:57
【问题描述】:

我有一个 bash 脚本(在 Mac 上),需要使用 3 个参数多次运行一个名为 program 的程序(比如 10 个):1 个参数文本文件(pars)和两个我想在 for 循环中更改的 shell 变量.

我似乎没有正确理解具体的引号。

#!/bin/bash

export FIRST=1.8
export STEP=0.1
export LAST=2.0
export PAR1=78

export nprocs=$( sysctl -n hw.ncpu )

for PAR2 in $(seq $FIRST $STEP $LAST);
do      
    parallel --jobs $nprocs ./program pars $PAR1 $PAR2 ::: {0..10}

    wait
done

有什么建议吗?

【问题讨论】:

  • 你的意思是:parallel --jobs $nprocs -- ./program pars $PAR1 $PAR2 ::: {{0..10}} 确保这些花括号被 shell 扩展,而不是作为 parallel 的参数读取?
  • 我的回答解决了您的问题吗?如果是这样,请考虑接受它作为您的答案 - 通过单击计票旁边的空心对勾/复选标记。如果没有,请说出什么不起作用,以便我或其他人可以进一步为您提供帮助。谢谢。 meta.stackexchange.com/questions/5234/…

标签: bash macos for-loop parallel-processing


【解决方案1】:

首先,您不需要wait,因为您没有在后台启动任何作业。

其次,如果您不想将参数 0..10 传递给您的程序,请使用:

parallel -n 0 ...

【讨论】:

  • 我目前不在机器旁检查,但我认为您的 nprocs 是多余的,因为它可能与 GNU Parallel的 CPU 内核数相同> 无论如何都要使用。
【解决方案2】:

这可能就是你想要的:

#!/bin/bash

export FIRST=1.8
export STEP=0.1
export LAST=2.0
export PAR1=78

seq $FIRST $STEP $LAST | parallel ./program pars $PAR1 {1} :::: - ::: {1..10}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2021-06-03
    • 2015-04-23
    • 2013-12-17
    • 2021-11-30
    相关资源
    最近更新 更多