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

xargs如何让输出内容附带对应的输入参数标识

解决方案

方案1:适配rx单输出行场景

如果你的rx脚本对每台主机只会输出单行结果,直接调整xargs执行逻辑即可:

gethosts | xargs -L1 -I% sh -c 'echo "%,$(rx % some-command)"'

解释:

  • 用sh -c包裹多步逻辑,先执行rx % some-command拿到远程执行结果
  • 直接把主机名(即占位符%的实际值)和执行结果用逗号拼接后输出

方案2:适配rx多输出行场景

如果rx对单台主机会返回多行输出,需要给每一行都加上主机前缀,用sed处理输出即可:

gethosts | xargs -L1 -I% sh -c 'rx % some-command | sed "s/^/%,/"'

解释:

  • sed的s/^/%,/逻辑是给每一行输出的开头位置,插入主机名,的前缀
  • 不管单台主机返回多少行结果,每一行都会对应标注所属主机

补充说明

如果命令中包含特殊字符、空格,注意做好转义,也可以改用printf代替echo获得更稳定的格式化效果:

gethosts | xargs -L1 -I% sh -c 'printf "%s,%s\n" "%" "$(rx % some-command)"'

如果环境中安装了GNU Parallel,写法可以更简洁:

gethosts | parallel 'printf "%s,%s\n" {} "$(rx {} some-command)"'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:15:03