Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure CLI komutlarıyla çalışırken, betik dilinizin tırnak işaretlerini ve kaçış karakterlerini nasıl kullandığını unutmayın. Farklı kabuklarda kullanılan betikleri destekliyorsanız, alıntı biçimlerindeki farklılıkları anlamak, değerli geliştirme saatlerinden tasarruf etmenizi sağlar.
Tek veya çift tırnak veya kaçış karakteri içeren parametre değerleriyle tahmin edilmeyen sonuçlardan kaçınmak için birkaç öneri aşağıdadır:
Boşluklar ve tırnak işaretleri
Boşluk içeren bir parametre değeri belirttiğinizde, değeri tırnak işaretleri içine yerleştirin.
Bash ve PowerShell'de değişken değeriniz tek tırnak işaretleri içeriyorsa, değeri çift tırnak içine alın ve tersi için de aynısı geçerlidir.
Bash'te, kaçış olan çift tırnak işaretleri dizenin bir parçası olarak değerlendirilir.
Windows Komut İstemi'nde, değişken değerleri içindeki tırnak işaretleri değerin bir parçası olarak değerlendirilir.
Aşağıda birkaç örnek verilmiştir:
# 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
Doğru örnekler için Bash çıkışı aşağıdaki gibidir:
my string ' ' wrapped in double quotes
my string " " wrapped in single quotes
my string with escaped " " double quotes wrapped in double quotes
Alıntıların çıkışa eklenmesini istiyorsanız, değişkenden şu şekilde kurtulabilirsiniz: 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"
JSON dizeleri
Bir JSON dizesinin içindeki içeriği korumak için tek tırnak işareti kullanın. Tek tırnak işareti, satır içi JSON değerleri sağlanırken gereklidir. Örneğin, bu JSON hem Bash hem de PowerShell'de doğrudur:
'{"key": "value"}'.Komutunuz bir Windows Komut İstemi'nde çalışıyorsa, çift tırnak kullanmanız gerekir. yukarıdaki JSON dizesinin Cmd.exe eşdeğeridir
"{"key":"value"}".JSON değeri çift tırnak içeriyorsa, bunları kaçırmanız gerekir.
JSON parametre değerleriyle çalışırken Azure CLI'nın
@<file>kuralını kullanmayı ve kabuğun yorumlama mekanizmalarını atlamayı göz önünde bulundurun.az ad app create --display-name myName --native-app --required-resource-accesses @manifest.json
Bash, PowerShell ve Cmd için kabul edilen JSON biçim desenleri şunlardır:
Testler arasındaki konsol çıkışını kaldırmak için Bash'in clear komutunu kullanın.
# Correct in Bash
az '{"key":"value"}' --debug
>> Command arguments: ['{"key":"value"}', '--debug']
az "{\"key\":\"value\"}" --debug
>> Command arguments: ['{"key":"value"}', '--debug']
Bu iki örnek yanlıştır çünkü tırnak işaretleri ve boşluklar Bash tarafından yorumlanır.
| Yanlış biçim | Sorun | Konsol çıktısı |
|---|---|---|
| az {"key":"value"} --debug | Eksik tek tırnak işaretleri veya kaçış karakterleri | Komuta ait bağımsız değişkenler: ['{key:value}', '--debug'] |
| az {"key": "value"} --debug | Tek tırnak işaretleri veya kaçış karakterleri eksik ve fazladan boşluk içeriyor | Komut satırı argümanları: ['{key:', 'value}', '--debug'] |
Azure CLI ile kısaltma söz dizimi kullanma bölümünde JSON parametre değerleriyle çalışma hakkında daha fazla bilgi edinin.
Boş stringler
PowerShell'de, değeriniz boş bir tırnak dizesi ()
''ise kullanın'""'.Bash veya PowerShell'de, değeriniz boş bir tırnak dizesi ()
''ise kullanın"''".# Correct in Bash myVariable="''" # Correct in PowerShell $myVariable = "''" $myVariable = '""'
Boşlukla ayrılmış değerler
Bazı Azure CLI komutları boşlukla ayrılmış değerlerin listesini alır. Anahtar adı veya değer boşluk içeriyorsa, çiftin tamamını sarmalayın: "my key=my value". Örneğin:
az web app config app settings set --resource-group myResourceGroup --name myWebAppName --settings "client id=id1" "my name=john"
CLI parametresi boşlukla ayrılmış bir liste kabul ettiğini belirttiğinde, iki biçimden biri beklenir:
Sıralanmamış, boşlukla ayrılmış liste örneği:
--parameterName firstValue secondValueTırnak içine alınmış boşlukla ayrılmış liste örneği:
--parameterName "firstValue" "secondValue"
Bu örnek, içinde boşluk bulunan bir dizedir. Boşlukla ayrılmış bir liste değil: --parameterName "firstValue secondValue"
Özel karakterler
PowerShell betik dilinde @ gibi özel karakterler vardır. Azure CLI'yi PowerShell'de çalıştırmak için, ` karakterini kaçış için özel karakterin önüne ekleyin. Değeri tek veya çift tırnak içine de "/" alabilirsiniz.
# 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
Kısa çizgi karakterleri
Parametrenin değeri kısa çizgiyle başlıyorsa, Azure CLI bunu parametre adı olarak ayrıştırmaya çalışır. Değer olarak ayrıştırmak için, parametre adını ve değerini birleştirmek amacıyla = kullanın: --password="-VerySecret".
--query parametresi
--query parametresini bir komutla kullandığınızda, JMESPath'in bazı karakterlerinin kabukta korunması gerekir.
Bu üç komut Bash'te doğru ve eşdeğerdir:
az version --query '"azure-cli"'
az version --query \"azure-cli\"
az version --query "\"azure-cli\""
Bash'teki yanlış komutlara iki örnek aşağıda verilmiştir:
# 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'
Bash, PowerShell ve Cmd arasında daha fazla örnek karşılaştırma için bkz . Azure CLI komut çıktısını sorgulama.
--debug parametresi
Alıntılama sorununu gidermenin en iyi yolu, komutu bayrağıyla --debug çalıştırmaktır. Bu bayrak, Azure CLI tarafından alınan gerçek bağımsız değişkenleri Python'un söz diziminde gösterir.
ile --debugAzure CLI komutlarının sorunlarını giderme hakkında daha fazla bilgi için bkz . Azure CLI sorunlarını giderme.
Betik dili kuralları
aşağıda, ilgili kuruluşların yayımladığı betik dili kurallarının hızlı bağlantıları verilmiştir:
- Bash betik dili: Bash alıntılama kuralları
- PowerShell betik dili: PowerShell AlıntıLama Kuralları
- Windows Komut İstemi: Kılavuz: Windows komut satırında Kaçış Karakterleri, Sınırlayıcılar ve Tırnak İşaretleri
Uyarı
PowerShell'deki bilinen bir sorun nedeniyle bazı ek kaçış kuralları geçerlidir. Daha fazla bilgi için bkz . Azure CLI'yi PowerShell betik dilinde çalıştırmayla ilgili önemli noktalar.
Ayrıca bakınız
Bu makalelerde daha birçok betik dili karşılaştırması bulabilirsiniz:
- Bash, PowerShell ve Cmd öğreticisindeki söz dizimi farklarını öğrenin
- JMESPath sorgusu kullanarak Azure CLI komut çıkışını sorgulama
- Azure CLI'yi PowerShell betik dilinde çalıştırma konusunda dikkat edilmesi gerekenler