You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将两个数组的对应元素传入parallel命令的:::参数并行执行

问题根源
  • GNU Parallel 默认对多个:::传入的参数列表执行笛卡尔积运算,即所有排列组合都会触发一次命令执行,你这里两个数组各有4个元素,4*4自然得到16次执行结果。
  • 脚本中第二个数组的展开写法存在语法错误:${arr_2{@}}的大括号顺序错误,正确的数组展开写法为${arr_2[@]}。
修复方案

添加--link参数即可实现同位置参数配对执行,该参数会指定Parallel按位置匹配多个输入源的元素,第1个输入源的第N个元素对应第2个输入源的第N个元素,刚好匹配你预期的4组配对输出。

修复后的完整脚本如下:

arr_1=(a.log b.log c.log d.log)
arr_2=(a.json b.json c.json d.json)
parallel --halt 2 --link echo "{1} {2}" ::: "${arr_1[@]}" ::: "${arr_2[@]}"

如果使用的是旧版本GNU Parallel不支持--link参数,可以替换为它的别名--xapply,效果完全一致。

内容的提问来源于stack exchange,提问作者patl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:57:03