【发布时间】: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。