Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ao trabalhar com comandos da CLI do Azure, lembre-se de como sua linguagem de script usa aspas e caracteres de escape. Se você oferece suporte a scripts usados em shells diferentes, entender as diferenças de aspas economiza horas valiosas de desenvolvimento.
Para evitar resultados imprevistos com valores de parâmetro contendo aspas simples ou duplas ou caracteres de escape, aqui estão algumas sugestões:
Espaços em branco e aspas
Se você fornecer um valor de parâmetro que contenha espaço em branco, coloque o valor entre aspas.
No Bash e no PowerShell, se o valor da variável contiver aspas simples, encapsule o valor entre aspas duplas e vice-versa.
No Bash, as aspas duplas que são escapadas são tratadas como parte da cadeia de caracteres.
No Prompt de Comando do Windows, as aspas dentro dos valores das variáveis são tratadas como parte do valor.
Veja alguns exemplos:
# Correct
myVariable="my string ' ' wrapped in double quotes"
myVariable='my string " " wrapped in single quotes'
myVariable="my string with escaped \" \" double quotes wrapped in double quotes"
# Wrong, escaped single quotes in Bash are not treated as part of the string
myVariable='my value with escaped \' \' single quotes wrapped in single quotes'
# after each example ...
echo $myVariable
A saída do Bash para os exemplos corretos é a seguinte:
my string ' ' wrapped in double quotes
my string " " wrapped in single quotes
my string with escaped " " double quotes wrapped in double quotes
Se você quiser que as aspas sejam incluídas na saída, escape da variável assim: echo \"$myVariable\"
.
echo \"$myVariable\"
"my string ' ' wrapped in double quotes"
echo \'$myVariable\'
'my string " " wrapped in single quotes'
echo \"$myVariable\"
"my string with escaped " " double quotes wrapped in double quotes"
Cadeias de caracteres JSON
Use aspas simples para preservar o conteúdo dentro de uma cadeia de caracteres JSON. Aspas simples são necessárias ao fornecer valores JSON embutidos. Por exemplo, este JSON está correto no Bash e no PowerShell:
'{"key": "value"}'
.Se o comando for executado no Prompt de Comando do Windows, você precisará usar aspas duplas. O equivalente à string JSON acima em Cmd.exe é
"{"key":"value"}"
.Se o valor JSON contiver aspas duplas, você deverá escapar delas.
Ao trabalhar com valores de parâmetro JSON, considere usar a
@<file>
convenção da CLI do Azure e ignorar os mecanismos de interpretação do shell.az ad app create --display-name myName --native-app --required-resource-accesses @manifest.json
Aqui estão os padrões de formato JSON aceitos para Bash, PowerShell e Cmd:
Use o comando do Bash para remover a saída do clear
console entre os testes.
# Correct in Bash
az '{"key":"value"}' --debug
>> Command arguments: ['{"key":"value"}', '--debug']
az "{\"key\":\"value\"}" --debug
>> Command arguments: ['{"key":"value"}', '--debug']
Esses dois exemplos seguintes estão incorretos, pois aspas e espaços são interpretados pelo Bash.
Formato incorreto | Problema | Saída do console |
---|---|---|
az {"key":"value"} --debug | Aspas simples ausentes ou caracteres de escape | Argumentos de comando: ['{key:value}', '--debug'] |
az {"key": "value"} --debug | Faltam aspas simples ou caracteres de escape, e contém espaço extra. | Argumentos de comando: ['{key:', 'value}', '--debug'] |
Saiba mais sobre como trabalhar com valores de parâmetro JSON em Como usar a sintaxe abreviada com a CLI do Azure.
Cadeias de caracteres vazias
No PowerShell, se o valor for uma cadeia de caracteres de aspas vazia (
''
), use'""'
.No Bash ou no PowerShell, se o valor for uma cadeia de caracteres de aspas vazia (
''
), use"''"
.# Correct in Bash myVariable="''" # Correct in PowerShell $myVariable = "''" $myVariable = '""'
Valores separados por espaço
Alguns comandos da CLI do Azure usam uma lista de valores separados por espaços. Se o nome da chave ou o valor contiver espaços, coloque o par inteiro entre aspas: "my key=my value"
. Por exemplo:
az web app config app settings set --resource-group myResourceGroup --name myWebAppName --settings "client id=id1" "my name=john"
Quando um parâmetro da CLI afirma que aceita uma lista separada por espaço, um destes dois formatos é esperado:
Exemplo de lista sem aspas e separada por espaços:
--parameterName firstValue secondValue
Exemplo de lista separada por espaços entre aspas:
--parameterName "firstValue" "secondValue"
Este exemplo é uma cadeia de caracteres que contém um espaço. Não é uma lista separada por espaços: --parameterName "firstValue secondValue"
Caracteres especiais
Há caracteres especiais na linguagem de script do PowerShell, como em @
. Para executar a CLI do Azure no PowerShell, adicione `
antes do caractere especial para fazer o escape. Você também pode colocar o valor entre aspas simples ou duplas "
/"
.
# The following three examples will work in PowerShell
--parameterName `@parameters.json
--parameterName '@parameters.json'
--parameterName "@parameters.json"
# This example will not work in PowerShell
--parameterName @parameters.json
Caracteres de hífen
Se um valor de parâmetro começar com um hífen, a CLI do Azure tentará analisá-lo como um nome de parâmetro. Se quiser analisá-lo como valor, use =
para concatenar o nome e o valor do parâmetro: --password="-VerySecret"
.
O parâmetro --query
Ao usar o parâmetro --query
com um comando, alguns caracteres de JMESPath precisam ser escapados no shell.
Estes três comandos estão corretos e são equivalentes no Bash:
az version --query '"azure-cli"'
az version --query \"azure-cli\"
az version --query "\"azure-cli\""
Aqui estão dois exemplos de comandos incorretos no Bash:
# Wrong, as the dash needs to be quoted in a JMESPath query
az version --query azure-cli
az version: error: argument --query: invalid jmespath_type value: 'azure-cli'
# Wrong, as the dash needs to be quoted in a JMESPath query, but quotes are interpreted by Bash
az version --query "azure-cli"
az version: error: argument --query: invalid jmespath_type value: 'azure-cli'
Para obter mais comparações de exemplo entre Bash, PowerShell e Cmd, consulte Consultar a saída do comando da CLI do Azure.
O parâmetro --debug
A melhor maneira de solucionar um problema de aspas é executar o comando com o sinalizador --debug
. Esse sinalizador mostra os argumentos reais recebidos pela CLI do Azure na sintaxe Python.
Para obter mais informações sobre como solucionar problemas de comandos da CLI do Azure com --debug
, consulte Solução de problemas da CLI do Azure.
Regras de linguagem de script
Aqui estão links rápidos para regras de linguagem de script publicadas por suas respectivas organizações:
- Script em Bash: regras de aspas do Bash
- Linguagem de script do PowerShell: Regras de Aspas do PowerShell
- Prompt de Comando do Windows: Como lidar com Caracteres de Escape, Delimitadores e Aspas na linha de comando do Windows
Observação
Devido ao problema conhecido do PowerShell, algumas regras extras de escape se aplicam. Para obter mais informações, consulte Considerações sobre a execução da CLI do Azure em uma linguagem de script do PowerShell.
Consulte também
Encontre muitas outras comparações de linguagens de script nestes artigos: