2017-12-22 12 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 - $ echo $Environment 
Dev 
[email protected] ~/Downloads - $ echo $App 
Api 
[email protected] ~/Downloads - $ echo $BUILD_NUMBER 
60 

だから私は間違って何をやっている:

[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 - $ 

あなたは、変数の値が設定されている見ることができます:

これは、出力Iは、ハードコーディングされた自動スケーリンググループ名を使用する場合ですか?

答えて

2

jq言語には、変数を組み合わせる独自の方法があります。 jqでは、あなたが書いた表現:

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

は単なるバニラJSON文字列です。

1つのオプションは、補間のためJQのサポートを使用することです:

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

別のオプションは、JQの文字列連結演算子、+を使用することです。

また、join("-")を使用することもできます。等々。

関連する問題