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

xargs无法正常拆分参数 用gh CLI从.env设置GitHub秘钥报错

问题根源

你的猜测完全正确,报错是由xargs -I {}的参数传递逻辑导致的:

  • -I {}会将每一行完整的输入内容作为单个字符串参数替换到{}位置,你原命令实际执行的是gh secret set "SECRET1 -b \"djfjgdfkjg\"",gh 会把整串内容识别为密钥名,自然不符合仅允许字母、数字、下划线的命名规则。
  • 手动执行命令时,shell 会自动将命令拆分为多个独立参数传递给gh,所以可以正常运行。
修复方案

方案1:调整xargs参数(快速修复)

去掉-I {}配置,改用-L 1参数让xargs每次读取一行,自动将行内内容拆分为多个参数传递:

sed -r 's/^([A-Za-z0-9_]*)=(.*)$/\1 -b "\2"/g' test.env | xargs -L 1 gh secret set

方案2:逐行读取env文件(更稳定,支持值含特殊字符)

如果你的密钥值存在引号、空格等特殊字符,更推荐用while循环直接拆分每行的密钥名和值,避免参数解析问题:

while IFS='=' read -r key value; do
  # 跳过注释行和空行
  [[ $key =~ ^#.*$ || -z $key ]] && continue
  gh secret set "$key" -b "$value"
done < test.env

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 18:15:09