Azure CLI echo 命令没有响应

Azure CLI echo command not responding

我希望将我的连接字符串存储在以下变量中:

connectionString= az storage account show-connection-string -n $storageAccount -g $resourceGroup --query connectionString -o tsv

当我执行上面的命令时,我在响应中得到了完整的连接字符串。但是,当我输入:

echo $connectionString

...我收到空白回复。变量未被存储。关于其他尝试的任何建议?

您可以使用 command substitution 来捕获变量中的输出:

connectionString=$(az storage account show-connection-string -n $storageAccount -g $resourceGroup --query connectionString -o tsv)

如果您需要跨多行保留输出,即当 Azure CLI returns 值采用 JSON 格式时,您可能希望使用稍微不同的格式输出到标准输出。

考虑这个例子:

varResourceGroup=$(az group show -n $resourceGroup)

使用与示例中相同的命令将输出输出到标准输出将导致一行:

echo $varResourceGroup 
{ "id": "/subscriptions/<subscription_id>/resourceGroups/<resourceGroup_name>", "location": "westeurope", "managedBy": null, "name": "<resourceGroup_name>", "properties": { "provisioningState": "Succeeded" }, "tags": null }

如果您使用稍微不同的格式,换行符将被保留:

echo "$varResourceGroup"
{
  "id": "/subscriptions/<subscription_id>/resourceGroups/<resourceGroup_name>",
  "location": "westeurope",
  "managedBy": null,
  "name": "<resourceGroup_name>",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

正如霍尔格所说,我们可以使用这个脚本来定义变量:

connectionString=$(az storage account show-connection-string -n $storageAccount -g $resourceGroup --query connectionString -o tsv)

另外,我们可以用这种方式来定义这个变量,像这样:

[root@jasoncli@jasonye ~]# connectionstring=`az storage account show-connection-string -n jasondisk3 -g jasonauto --query connectionString -o tsv`
[root@jasoncli@jasonye ~]# echo $connectionstring
DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=jasondisk3;AccountKey=m+kQwLuQZiI3LMoMTyAI8KxxxxD+ZaT9HUL3Agxxxxqul4s8fAIHGPMTD/AG2j+TPHBpttq5hXRmTaQ==

希望对您有所帮助。