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

如何使用xargs将Shell数组作为命令行参数传递给目标脚本

问题根因

xargs的核心作用是将管道接收的输入内容转换为后续命令的位置参数,而非将内容作为标准输入传递给后续命令。
原有写法中script2.sh的逻辑是循环读取标准输入的每行内容,使用xargs后,数组所有元素都被转为script2.sh的启动入参,script2.sh的标准输入没有内容,自然不会产生输出。

正确实现方案

调整逻辑说明

  • 发送侧(script1.sh):使用\0空字符作为数组元素的输出分隔符,配合xargs的-0参数识别分隔符,避免数组元素包含空格、换行等特殊字符时出现解析错误
  • 接收侧(script2.sh):不再读取标准输入,改为遍历传入的所有位置参数即可

完整代码

script1.sh

#!/bin/bash
this_chunk=(1 2 3 4)
printf "%s\0" "${this_chunk[@]}" | xargs -0 ./script2.sh

script2.sh

#!/bin/bash
# 如果需要和原有输出格式一致,将echo改为 echo "--$i" 即可
for i in "${@}"; do
    echo "$i"
done

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:54:05