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

如何让GNU Parallel按索引匹配多输入参数数组而非生成全组合

如何让GNU Parallel按索引匹配多输入参数数组而非生成全组合

嗨,这个问题我之前也碰到过!GNU Parallel默认确实会生成所有输入参数的笛卡尔积,也就是你现在得到的全组合结果,但要实现按索引一一配对的需求,其实用一个简单的选项就能搞定——--xapply。

修改后的脚本示例

把你原来的Parallel调用命令加上--xapply参数就行:

#!/bin/bash

letters='a b'
numbers='1 2'

f1(){
    echo $1 $2
    echo letter: $1
    echo number: $2
}

export -f f1

# 关键就是加上--xapply选项
parallel --xapply f1 {1} {2} ::: $letters ::: $numbers

运行结果

执行这个修改后的脚本,就会得到你想要的按索引配对的输出:

a 1
letter: a
number: 1
b 2
letter: b
number: 2

额外说明

--xapply的核心逻辑是:将每个输入源的第N个元素对应配对,直到最短的那个输入源的元素用完。比如如果你的letters是a b c而numbers还是1 2,那只会生成a 1和b 2两组结果,第三个元素c因为没有对应的数字会被自动忽略。

备注:内容来源于stack exchange,提问作者tlhenvironment

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 14:23:15