微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试在do循环中向我们发送Azure CLI命令循环外工作

如何解决尝试在do循环中向我们发送Azure CLI命令循环外工作

我正在尝试在do循环中使用一些Azure cli命令。 这些命令在循环外部运行。 我不知道为什么它们会在循环外返回null。

    `az login --service-principal **creds removed**
     displayName=$(az ad app list --all | jq '. [] .displayName')
     for name in $displayName;
     do
         echo $name  
         az ad app list --all --display-name $name | jq ".[0] .passwordCredentials[0].endDate" 
     done`

例如,如果我执行以下操作,则显示名称之一是boss-app

az ad app list --all --display-name "boss-app" | jq ".[0] .passwordCredentials[0].endDate"
"2228-02-34T25:50:41.324437+00:00

即使我将完整的命令放入循环中,它也可以正确输出日期,当我尝试使用变量$ name时,它似乎不起作用。

抱歉,这是一个菜鸟问题。

解决方法

您可以将脚本更改为此:

az login --service-principal **creds removed**
for name in $(az ad app list --all | jq '. [] .displayName')
do
    echo $name  
    az ad app list --all --display-name $name | jq ".[0] .passwordCredentials[0].endDate" 
done
,

由于您已在循环中使用[0]过滤了广告应用程序,因此我认为您应像这样在循环中更改代码,而无需指定数组索引 az login --service-principal **creds removed** displayName=$(az ad app list --all | jq '. [] .displayName') for name in $displayName; do echo $name az ad app list --all --display-name $name | jq ".[] .passwordCredentials[].endDate" done

--query

结果

enter image description here

命令

enter image description here

此外,如果要使用Azure CLI全局参数jq而不是"",则可以按以下方式使用它:

请注意,在查询中,尝试对Windows使用双引号'',对于Linux OS使用单引号az login --service-principal **creds removed** displayName=$(az ad app list --all --query "[].displayName" -o tsv) for name in $displayName; do echo $name az ad app list --all --display-name $name --query "[].passwordCredentials[].endDate" done

{{1}}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。