gpt4 book ai didi

bash - 检查 shell 变量在返回空列表时失败

转载 作者:行者123 更新时间:2023-12-03 06:54:33 25 4
gpt4 key购买 nike

目标:尝试使用 bash 脚本检查 azure 上是否存在资源

我使用的代码:

status=$(az group list --query "[?name.contains(@,'test')]")
if [[ "$status" == null ]];
then
echo "not exist"
else
echo "exist"
fi

我在 azure 中有这个资源,即它应该返回为“存在”,但它说不存在如果我更改为不存在的资源组名称,那么时间也不存在。

您在这里看到任何语法问题吗?

如果我在命令行执行检查,而不是脚本,下面是结果

user@ablab:~$ status=$(az group list --query "[?name.contains(@,'abcd')]")
user@ablab:~$ echo $status
[]
user@ablab:~$ status=$(az group list --query "[?name.contains(@,'test')]")
user@ablab:~$ echo $status
[ { "id": "/subscriptions/xxxx-xxxx-xxx--xxxxx3/resourceGroups/test1", "location": "westeurope", "managedBy": null, "name": "test1", "properties": { "provisioningState": "Succeeded" }, "tags": null, "type": "Microsoft.Resources/resourceGroups" } ]

现在我想使用 if 条件,这样如果它存在,它应该处理一组流程,其他一组代码..

请让我知道我的 if 语句有什么问题。

最佳答案

语法很好。但是,从您的示例中我没有看到 az 会将字符串 null 写入标准输出。在第一种情况下,它根据您发布的内容打印字符串 []。要捕获这种情况,您必须进行测试

if [[ $status == '[]' ]]
then
...

字符串周围的引号告诉 bash 不要将其解释为 glob 模式。

关于bash - 检查 shell 变量在返回空列表时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73163348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com