我有这个函数,我需要它引用多个参数从一个函数使用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
。我试图做的是让它也执行$2
目录中的bash*.sh*
。
根据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
型
1条答案
按热度按时间eufgjt7s1#
假设你想为每个
*script.sh
运行所有的bash*.sh
:字符串
如果每个
bash*.sh
链接到一个*script.sh
(:::+
在版本20160422中引入):型
使用
--dry-run
测试:型
如果这不能回答您的问题,请更新您希望GNU Parallel运行的命令,例如:
型
并在运行
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)