2017-12-22 18 views
0

는 내가 JQ 쿼리 bash는 변수가 포함 된 경우 jq를 사용 AWS cli의 출력을 구문 분석을 시도 그래서 같은 the --arg switch를 사용하여 해요 : 나는 명령을 실행할 때 -arg 스위치를 사용하여 인수가 포함 된 jq를 사용하여 aws-cli 출력을 구문 분석하는 방법?

$ aws ec2 describe-instances --region $region | jq --arg environment "$Environment" --arg br "$BUILD_NUMBER" --arg app "$App" -r '.Reservations[].Instances[].Tags[]?.Value | select(startswith("Company-$environment-$br-$app") 

나는 새로운 라인을 얻을.

[email protected] ~/Downloads - $ aws ec2 describe-instances --region $region | jq --arg environment "$Environment" --arg br "$BUILD_NUMBER" --arg app "$App" -r '.Reservations[].Instances[].Tags[]?.Value | select(startswith("Company-Dev-60-Api"))' 
Company-Dev-60-ApiServersASG-19L10K16RUXTE 
Company-Dev-60-ApiServersASG-19L10K16RUXTE 
[email protected] ~/Downloads - $ 

당신은 변수의 값이 설정되어 볼 수 있습니다 : 그래서 내가 뭘 잘못

[email protected] ~/Downloads - $ echo $Environment 
Dev 
[email protected] ~/Downloads - $ echo $App 
Api 
[email protected] ~/Downloads - $ echo $BUILD_NUMBER 
60 

이 열심히 자동 스케일링 그룹 이름을 코딩을 사용하여 출력은?

답변

2

jq 언어에는 변수를 결합하는 고유 한 방법이 있습니다. jq에서 작성한 표현식은 다음과 같습니다.

"Company-$environment-$br-$app" 

은 단지 바닐라 JSON 문자열입니다.

하나의 옵션은 보간 JQ의 지원을 사용하는 것입니다 :

"Company-\($environment)-\($br)-\($app)" 

또 다른 옵션은 JQ의 문자열 연결 연산자, +을 사용하는 것입니다.

join("-")을 사용할 수도 있습니다. 등등.