处理Azure CLI在bash上为az sql db列表输出



如果存在数据库则返回1,否则返回0。

az sql db list --resource-group demo-group --server demo-server --query "[?name == 'debo-database'] | length(@)"

问题是如何在

这样的条件下使用它
[ $(az sql db list --resource-group demo-group --server demo-server --query "[?name == 'debo-database'] | length(@)") -eq 1 ] && echo "exists"

上述情况没有按计划进行…

您错误地检查了stdout输出命令的值"1"代替它的返回码. 对非零返回码使用&&条件链(通过用!反转原始az返回码的意义):

! az sql db list --resource-group demo-group --server demo-server --query "[?name == 'debo-database'] | length(@)" && echo "exists"

…或者同样的事情,但更详细地使用if语句:

if ! az sql db list --resource-group demo-group --server demo-server --query "[?name == 'debo-database'] | length(@)"; then echo "exists"; fi

上面检查az的任何非零返回码。更明确地检查返回码是否为1:

az sql db list --resource-group demo-group --server demo-server --query "[?name == 'debo-database'] | length(@)"
case $? in
(1) echo "exists";;
esac

最新更新