我有这个函数,我需要它使用GNU parallel从一个函数中引用多个参数。
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
$ ls
firstscript.sh
secondscript.sh
thirdscript.sh
bashhim.sh
bashscript.sh
bashher.sh
parallel foo
基本上*script.sh
通过将内部脚本作为参数引用来执行内部内部的所有脚本foo
。哪个是$1
。我想做的是通过使用使其也执行bash*.sh*
在folders_with_scripts
目录内$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
不会削减它您的问题不包含MVCE https://stackoverflow.com/help/mcve特别是我无法直接在系统上运行您的代码。因此,此答案基于我对我认为您正在尝试执行的操作的最佳猜测。
假设您要bash*.sh
为每个运行全部*script.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
并echo *script.sh bash*.sh
在您运行的目录中显示的输出parallel
。
后面的数据:::
称为输入源。与输入源处理被覆盖在第4章https://zenodo.org/record/1146014印刷(:http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product- 23558902.html)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句