모든 것것 같다수정하고 "echo" 출력을 aws 명령에 붙여넣으면 예상대로 작동합니다. 그러나 명령줄에서 변수를 사용할 때 aws는 구분 기호가 존재하더라도 닫히지 않은 구분 기호에 대해 불평합니다(또는 최소한그런 것 같아요)구분 기호를 종료합니다.
QF1="'DBInstances[*].[DBInstanceIdentifier, "
QF2="SecondaryAvailabilityZone]'"
echo ${QF1}${QF2}
'DBInstances[*].[DBInstanceIdentifier, SecondaryAvailabilityZone]'
$ aws rds describe-db-instances \
--query 'DBInstances[*].[DBInstanceIdentifier, SecondaryAvailabilityZone]' \
--output=table
-------------------------------------------
| DescribeDBInstances |
+--------------------------+--------------+
| copy-20210720 | None |
| uis-clitst-rds-east-db1 | None |
| uis-dev-rds-east-db1 | None |
| uis-intst-rds-east-db1 | us-east-1c |
| uis-prod-rds-east-db1 | us-east-1b |
+--------------------------+--------------+
aws rds describe-db-instances --query ${QF1}${QF2}
Bad value for --query 'DBInstances[*].[DBInstanceIdentifier,: Bad jmespath expression: Unclosed ' delimiter:
'DBInstances[*].[DBInstanceIdentifier,
^
답변1
QF1="'DBInstances[*].[DBInstanceIdentifier, "
QF2="SecondaryAvailabilityZone]'"
# ...
aws rds describe-db-instances --query ${QF1}${QF2}
알아채다확장 목록쉘이 실행됩니다 첫 번째그리고그 다음에Emit aws
마지막 줄의 변수를 참조하지 않기 때문에 다음과 같은 영향을 받습니다.3.5.7 분사
aws를 시작하는 명령은 다음과 같습니다(명확성을 위해 각도 따옴표가 추가됨).
aws rds describe-db-instances --query «'DBInstances[*].[DBInstanceIdentifier,» «SecondaryAvailabilityZone]'»
# ....................................^......................................^.^...........................^
오류 메시지는 진실을 알려줍니다.
대신 이렇게 하세요:
aws rds describe-db-instances --query "${QF1}${QF2}"
# ....................................^............^
중괄호는 따옴표를 대체할 수 없습니다.