Bash

將有效命令的結果導出為 bash 變數時出錯

  • November 30, 2015

我正在嘗試將命令行的結果導出為 en 環境變數。這是我的做法:

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=

知道為什麼我會收到此錯誤嗎?

反斜杠後似乎有一個空格。要進行多行命令,反斜杠必須是一行的最後一個字元。

從 的輸出推導出set -xv

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

引用自:https://unix.stackexchange.com/questions/246388