유효한 명령 결과를 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 ->  ~~~

관련 정보