我正在尝试将命令行的结果导出为环境变量。我是这样做的:
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 -> ~~~