명령줄 결과를 환경 변수로 내보내려고 합니다. 이것이 내가 하는 방법이다:
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 -> ~~~