ShellCheck 抱怨我的表达式实际上不是双引号;为什么?

Mic*_*l J 9 shell bash shell-script shellcheck

我正在使用 AWS CLI 编写 bash 脚本,并shellcheck给出了一个我认为不正确的错误。我想弄清楚为什么它会吹毛求疵。

这是代码和错误消息:

for server in $(${aws} ec2 describe-instances --query 'Reservations[].Instances[][].{Name: Tags[?Key==`Name`].Value[] | [0]}' --filters "Name=tag:Name,Values=${server_name}*" --output text);
                                                                                                                                                                            ^-- SC2016: Expressions don't expand in single quotes, use double quotes for that.
Run Code Online (Sandbox Code Playgroud)

我无法让代码在 SO 编辑器中正确排列,但^--指向*代码中的 。这部分:

"Name=tag:Name,Values=${server_name}*"
Run Code Online (Sandbox Code Playgroud)

该错误提供了一个指向 ShellCheck 文档的链接以供参考,但是当我仔细检查所有内容时,看起来我符合要求。:D

我猜这*是在扔东西,我知道我可以通过这样做来解决这个问题,shellcheck -e SC2016但我真的很想知道是什么导致了 shellcheck 出现了鲤鱼。

有任何想法吗?

Jos*_*ica 12

这是一种误报,但它不是您认为的那样。它与 无关*,也没有指向我。`Name`对单引号内的内容感到不安。例如,echo '`Name`'产生相同的警告,因为它认为您想要评估反引号,所以它警告您它们不会被评估。