【问题标题】:xargs does not seem to separate parametersxargs 似乎没有分隔参数
【发布时间】:2021-05-18 23:48:36
【问题描述】:

我正在尝试使用 xargs 在 github 中使用 gh CLI 设置机密。

鉴于我有一个包含以下条目的 .env 文件

SECRET1=djfjgdfkjg
SECRET2=jbnfdgjn
SECRET3=A line of text

sed 命令sed -r 's/^([A-Za-z0-9_]*)=(.*)$/\1 -b "\2"/g' ./.env 产生以下输出:

SECRET1 -b "djfjgdfkjg"
SECRET2 -b "jbnfdgjn"
SECRET3 -b "A line of text"

我不确定这个命令的原因:

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

每个秘密都失败,消息secret name can only contain letters, numbers, and _

手动运行gh secret set SECRET1 -b "djfjgdfkjg" 不会出错。

我猜问题是第一个 arg(秘密名称)正在传递值 SECRET1 -b "djfjgdfkjg" 而不仅仅是 SECRET1 但我不确定如何解决这个问题?

【问题讨论】:

  • 通常,当从命令行正确运行命令而不是从脚本运行时,问题可能来自丢失引号。由于我们无法重现您的问题,因为无法访问命令 secret,我们只能猜测您可以在引号前添加一个反斜杠(或两个):sed -r 's/^([A-Za-z0-9_]*)=(.*)$/\1 -b \\"\2\\"/g' ./.env

标签: bash xargs


【解决方案1】:

在进行了更多挖掘之后,我发现问题出在-I 的使用上,并且:

sed -rn 's/^[[:space:]]*([[:alpha:]][[:alnum:]_]*)=(.*)$/\1 -b "\2"/p' .env | xargs -n 3 gh secret set

解决问题。

【讨论】:

    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多