【问题标题】:Parallel: How to reference multiple arguments from a function并行:如何从函数中引用多个参数
【发布时间】:2018-11-11 03:53:10
【问题描述】:

我有这个函数,我需要它来引用使用 GNU 并行函数的多个参数。

foo () {

    cd ${HOME}/sh/xxx/xxx/xxx/folder_with_scripts
    bash -H $1 #replace with echo in test run {echo $1 is being echoed}
    bash -H $2 #replace with echo in test run {echo $2 is being echoed}
}

export -f foo
parallel foo ::: *script.sh bash*.sh

folder_with_scripts 内容

$ ls
firstscript.sh
secondscript.sh
thirdscript.sh
bashhim.sh
bashscript.sh
bashher.sh

parallel foo 基本上通过在foo 中将其作为参数引用来执行*script.sh 之后的所有脚本。这是$1。我想要做的是让它也执行bash*.sh*,它们在folders_with_scriptsdirectory 中使用$2

根据man parallel,语法为:

 parallel [options] [command [arguments]] ( ::: arguments | :::: argfile(s) )

由于::: arguments 是复数,我假设这是很有可能的。

结果

为方便起见,我将 bash 替换为 echo

$ ./foo.sh
firstscript.sh is being echoed
secondscript.sh is being echoed
thirdscript.sh is being echoed
              is being echoed
              is being echoed
              is being echoed

想要的结果

firstscript.sh is being echoed
secondscript.sh is being echoed
thirdscript.sh is being echoed
bashhim.sh is being echoed
bashscript.sh is being echoed
bashher.sh is being echoed

就我而言,parallel foo ::: *.sh 不会削减它。

$1 的位置与*script.sh 交换不会削减它

【问题讨论】:

    标签: bash shell parallel-processing arguments gnu-parallel


    【解决方案1】:

    您的问题不包含 MVCE https://stackoverflow.com/help/mcve 特别是我无法直接在我的系统上运行您的代码。所以这个答案是基于我对我认为你正在尝试做的事情的最佳猜测。

    假设您要为每个*script.sh 运行所有bash*.sh

    parallel foo ::: *script.sh ::: bash*.sh
    

    如果每个bash*.sh 都链接到一个*script.sh:::+ 在版本 20160422 中引入):

    parallel foo ::: *script.sh :::+ bash*.sh
    

    --dry-run测试它:

    parallel --dry-run foo ::: *script.sh ::: bash*.sh
    parallel --dry-run foo ::: *script.sh :::+ bash*.sh
    

    如果这不能回答您的问题,请使用您希望 GNU Parallel 运行的命令更新问题,例如:

    foo firstscript.sh bashhim.sh
    foo secondscript.sh thirdscript.sh
    foo bashscript.sh bashher.sh
    

    并在运行parallel 的目录中显示echo *script.sh bash*.sh 的输出。

    ::: 后面的数据称为输入源。 处理输入源在https://zenodo.org/record/1146014的第4章(印刷:http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html

    【讨论】:

      猜你喜欢
      • 2017-02-18
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 2020-03-14
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多