Azure CLI从表中选择一个选项

时间:2018-10-31 15:29:39

标签: azure azure-cli azure-cli2

我正在尝试在Azure CLI中获取带有数字的表输出,并将其作为输出

Number      Location     Name
----------  -----------  -------------
1           somewhere    ResourceGroup1
2           somewhere    ResourceGroup2

我现在拥有的代码是

az group list --query '[].{location:location, name:name}'

我现在得到的输出是

Location     Name
----------  ---------------
somewhere    ResourceGroup1
somewhere    ResourceGroup2

我的最终目标是,如果选择数字1,则选择名称,以便稍后在脚本中使用它

3 个答案:

答案 0 :(得分:2)

对于您的问题,没有Azure CLI命令可以实现。但是您可以使用脚本来实现它。例如,您可以使用Shell脚本:

#!/bin/bash

az group list --query '[].{location: location, name: name}' -o table >> output.txt

# This command just add the line number inside the file, it's optional.
cat -n output.txt >> result.txt

# you can just get the group name with a specific line, the same result with output.txt
awk '{if (NR == line) print $3}' result.txt 

希望这会有所帮助。

答案 1 :(得分:1)

据我了解,您正在尝试创建变量,以便以后在输出中使用。您无需先将其放在表格中。使用相同的示例,您可以执行以下操作;

gpname="$(az group list --query [0].name --output tsv)"

az group show -n $gpname

Imgur

祝你好运.....

评论信息:

您正在寻找的是Linux,而不是Azure。我不是Linux CLI专家,但她是可以构建的基本脚本。

#!/bin/bash

gpnames="$(az group list --query [].name --output tsv)"

PS3='Select A number: '

select gpname in $gpnames

do

az group show -n $gpname

Done

Imgur

希望这会有所帮助...

答案 2 :(得分:1)

您可以在过滤器中使用contains表达式(jmespath)来过滤结果:

filter=resource_group_name
filterExpression="[?contains(name, '$filter')].name"
az group list --query "$filterExpression" -o tsv

与已经提出的答案相比,这是一种更好的方法。

更多阅读:
http://jmespath.org/specification.html#filterexpressions
http://jmespath.org/specification.html#built-in-functions