bash - 并行:如何从函数中引用多个参数
问题描述
我有这个函数,我需要它来引用使用 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
*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
with的位置*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
。
后面的数据:::
称为输入源。处理输入源在https://zenodo.org/record/1146014的第 4 章(印刷:http ://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product- 23558902.html )
推荐阅读
- python - Pytest-Flask 无法导入名称“create_app”
- reactjs - 本地主机存储
- python - 如何使用原始 DF 中的索引创建新的 DataFrame 重复行
- swiftui - SwiftUI - 无法在工作表底部填充屏幕
- c - 具有动态维度的向量不是来自辅助函数的正确 scanf()
- javascript - Sweetalert2 模态在图像出现在模态之前短暂加载
- r - R data.table中双点`..`的错误
- javascript - ES2020 可选链:a?.().b 和 a()?.b 和 a?.()?.b 有什么区别
- javascript - 需要帮助找出为什么我的 3d 模型没有在浏览器中呈现
- flutter - 如何使用颤振对 Firestore 文档及其子集合进行建模?