Aws cli 如何将jq与“select(startswith(“$variable”)”一起使用?
我正在使用jq解析来自awscli的一些输出 我尝试使用'selectstartswith$variable',但由于某些原因,即使使用变量的值,它也无法正常工作 例如:Aws cli 如何将jq与“select(startswith(“$variable”)”一起使用?,aws-cli,jq,Aws Cli,Jq,我正在使用jq解析来自awscli的一些输出 我尝试使用'selectstartswith$variable',但由于某些原因,即使使用变量的值,它也无法正常工作 例如: itai@MacBook-Pro ~/src/Scripts - $ echo $App Analytics itai@MacBook-Pro ~/src/Scripts - $ aws cloudformation describe-stacks --stack-name $StackName --region $regio
itai@MacBook-Pro ~/src/Scripts - $ echo $App
Analytics
itai@MacBook-Pro ~/src/Scripts - $ aws cloudformation describe-stacks --stack-name $StackName --region $region | jq -r '.Stacks[].Outputs[].OutputKey | select(startswith("Analytics") )'
AnalyticsAutoScalingGroup
itai@MacBook-Pro ~/src/Scripts - $ aws cloudformation describe-stacks --stack-name $StackName --region $region | jq -r '.Stacks[].Outputs[].OutputKey | select(startswith("$App") )'
itai@MacBook-Pro ~/src/Scripts - $
我知道我可以像这样使用grep:
aws cloudformation describe-stacks --stack-name $StackName --region $region | jq -r '.Stacks[].Outputs[].OutputKey' | grep $App
但是我更喜欢在整个命令中使用jq
我是做错了还是根本不可能?通常,将shell变量的值传递给jq程序的最佳方法是使用--arg和/或--argjson命令行选项,如手册中所述。可以使用env传入环境变量
另请参见您也可以不使用-arg或-argjson来执行此操作。在您的例子中,由于您的变量包含一个字符串值,您可以这样做
aws cloudformation describe-stacks --stack-name $StackName --region $region |\
jq -r '.Stacks[].Outputs[].OutputKey | select(startswith('\"$App\"') )'
注意,我添加了单引号,并在变量周围转义了双引号
请参阅此处的“如何将环境变量传递给jq程序”?jq程序如何参数化?第二个答案