将有效命令的结果导出为 bash 变量时出错

将有效命令的结果导出为 bash 变量时出错

我正在尝试将命令行的结果导出为环境变量。我是这样做的:

group_id=$(aws ec2 describe-security-groups --filters Name=group-name,Values=${group_name} \
  | jq '.["SecurityGroups"][0].GroupId' \
  | sed -e 's/^"//'  -e 's/"$//'
)

但是,当我运行 bash 文件时,出现以下错误:

Error parsing parameter '--filters': Expected: '=', received: 'EOF' for input:

 ^

该命令是有效的,因为当我直接从命令行尝试它时它可以工作。当我set -exv在这个 bash 文件的顶部使用时,我得到文件的内容:

+ case $1 in
+ init
aws ec2 describe-security-groups --filters Name=group-name,Values=${group_name} \
++ aws ec2 describe-security-groups --filters Name=group-name,Values=docker-networking ' '

Error parsing parameter '--filters': Expected: '=', received: 'EOF' for input:

 ^
+ group_id=

知道为什么我会收到此错误吗?

答案1

反斜杠后面似乎有一个空格。要创建多行命令,反斜杠必须是一行中的最后一个字符。

从 的输出推导出set -xv

++ aws ec2 describe-security-groups --filters Name=group-name,Values=docker-networking ' '
                                                                              here ->  ~~~

相关内容