2017-12-22 38 views
0

私はjqを使用してAWS cliの出力を解析しています。

私は'select(startswith("$variable"))'を使用しようとしていますが、何らかの理由で変数の値を使用しても正しく動作しません。

例:

aws cloudformation describe-stacks --stack-name $StackName --region $region | jq -r '.Stacks[].Outputs[].OutputKey' | grep $App 

しかし、私は、コマンド沿っJQすべてを使用することを好む:

[email protected] ~/src/Scripts - $ echo $App 
Analytics 
[email protected] ~/src/Scripts - $ aws cloudformation describe-stacks --stack-name $StackName --region $region | jq -r '.Stacks[].Outputs[].OutputKey | select(startswith("Analytics"))' 
AnalyticsAutoScalingGroup 
[email protected] ~/src/Scripts - $ aws cloudformation describe-stacks --stack-name $StackName --region $region | jq -r '.Stacks[].Outputs[].OutputKey | select(startswith("$App"))' 
[email protected] ~/src/Scripts - $ 

私はそうのようなグレップを使用することができます知っています。

私は間違っているのですか、それともできませんか?

答えて

0

一般に、シェル変数の値をjqプログラムに渡す最も良い方法は、マニュアルに記載されているように、-—argおよび/または—-argjsonコマンドラインオプションを使用することです。環境変数はenvを使用して渡すことができます。

も参照してください。https://github.com/stedolan/jq/wiki/FAQ

関連する問題