コマンドラインの結果を環境変数にエクスポートしようとしています。これが私がする方法です:
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 -> ~~~