bash 无法解释 GitHub Ubuntu 中使用大括号的 cli 命令

bash 无法解释 GitHub Ubuntu 中使用大括号的 cli 命令

aws s3api为了让 bash shell 正确解释命令,需要在下面的 cli 命令中更改哪些具体语法?

该环境是一个 ubuntu 最新的 GitHub 运行程序,使用 bash shell 执行 GitHub 工作流程。

GitHub Ubuntu 运行程序中的中断命令是:

aws s3api put-object-tagging --bucket s3.bucket.name --key filename.tar.gz --tagging TagSet={Key=public,Value=yes}

抛出的错误是:

Unknown options: TagSet=Value=yes

相同的命令在使用 cmd.exe 的 Windows 笔记本电脑中完美运行,因此该代码是有效的 aws cli 命令。

该问题可能与 bash 中环境变量的 GitHub 工作流程语法有关,该语法类似于 ${envVarName}。或者还有其他问题吗?

答案1

你只需要引用你的论点:

aws s3api put-object-tagging --bucket s3.bucket.name --key filename.tar.gz \
  --tagging "TagSet={Key=public,Value=yes}"

bash 中的语法{a,b,c}表示大括号扩展:

大括号扩展是一种可以生成任意字符串的机制。这种机制类似于路径名扩展,但生成的文件名不需要存在。要展开大括号的模式采用可选的前导码的形式,后跟一系列逗号分隔的字符串或一对大括号之间的序列表达式,最后是可选的后脚本。前导码作为大括号内包含的每个字符串的前缀,然后将后记附加到每个结果字符串,从左到右扩展。 (来自bash(1)手册页)

所以如果我们写:

echo TagSet={Key=public,Value=yes}

我们得到输出:

TagSet=Key=public TagSet=Value=yes

通过引用该参数,我们可以抑制大括号扩展。

相关内容