【发布时间】: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