Azure CLI-referentieopdrachten kunnen in verschillende scripttalen worden uitgevoerd.
Als u geen ervaring hebt met Bash en ook de Azure CLI, is dit artikel een uitstekende plek om uw leertraject te beginnen. Lees dit artikel op dezelfde wijze als in een zelfstudie voor meer informatie over het gebruik van de Azure CLI in een Bash-scripttaal.
In dit artikel leert u het volgende:
Queryresultaten als JSON-woordenlijsten of matrices
Uitvoer opmaken als JSON, tabel of TSV
Eén en meerdere waarden opvragen, filteren en opmaken
Gebruik als/bestaat/en de syntaxis van hoofdletters en kleine letters
Gebruiken voor lussen
Grep-, sed-, plak- en bc-opdrachten gebruiken
Shell- en omgevingsvariabelen vullen en gebruiken
Als u geen Azure-abonnement hebt, maakt u een gratis Azure-account voordat u begint.
Bash starten
Start Bash met behulp van Azure Cloud Shell of een lokale installatie van de Azure CLI.
In dit artikel wordt ervan uitgegaan dat u Bash uitvoert met behulp van Azure Cloud Shell of azure CLI lokaal uitvoert in een Docker-container.
Query's uitvoeren op woordenlijstresultaten
Een opdracht die altijd slechts één object retourneert, retourneert een JSON-woordenlijst. Woordenlijsten zijn niet-geordende objecten die worden geopend met sleutels. Voor dit artikel beginnen we met het uitvoeren van query's op het accountobject met behulp van de opdracht Account weergeven.
Azure CLI
az account showaz account show --output json # JSON is the default format
De volgende uitvoer van de JSON-woordenlijst bevat enkele velden die zijn weggelaten om kort te zijn en de identificatiegegevens worden verwijderd.
JSON
bash-5.1# az account show
{
"environmentName": "AzureCloud",
"isDefault": true,
"managedByTenants": [],
"name": "My test subscription",
"state": "Enabled",
"user": {
"name": "user@contoso.com",
"type": "user"
}
}
De uitvoer opmaken als YAML
Gebruik het --output yaml argument (of -o yaml) om de uitvoer in yaml-indeling op te maken, een serialisatie-indeling voor gegevens zonder opmaak. YAML is doorgaans gemakkelijker te lezen dan JSON en kan eenvoudig worden omgezet in die indeling. Sommige toepassingen en CLI-opdrachten gebruiken YAML als configuratie-invoer, in plaats van JSON.
Gebruik het --output table argument (of -o table) om de uitvoer op te maken als een ASCII-tabel. Tabeluitvoer bevat geen geneste objecten, maar hierop kan wel worden gefilterd met behulp van een query.
Enkelvoudige waarden en geneste waarden opvragen en opmaken
De volgende query's laten zien hoe u query's uitvoert op één waarde, inclusief geneste waarden in de uitvoer van een JSON-woordenlijst. De laatste query in deze set demonstreert het opmaken van de uitvoer met behulp van het -o tsv argument. Dit argument retourneert de resultaten als door tabs en nieuwe regels gescheiden waarden. Deze actie is handig voor het verwijderen van aanhalingstekens in de geretourneerde waarde. Dit is handig om de uitvoer te gebruiken in andere opdrachten en hulpprogramma's die de tekst in een bepaalde vorm moeten verwerken (zoals verderop in dit artikel wordt weergegeven).
Azure CLI
az account show --query name # Querying a single valueaz account show --query name -o tsv # Removes quotation marks from the outputaz account show --query user.name # Querying a nested valueaz account show --query user.name -o tsv # Removes quotation marks from the output
Eigenschappen van matrices opvragen en opmaken
In de volgende query ziet u hoe u eigenschappen ophaalt in een JSON-matrix. Abonnementseigenschappen ophalen, weergegeven als een tabel met abonnementen.
Azure CLI
az account list --query"[].{subscription_id:id, name:name, isDefault:isDefault}"-o table
Deze query retourneert resultaten die vergelijkbaar zijn met:
JSON
Subscription_id Name IsDefault
------------------------------------ ------------------------------------------------- -----------
11111111-3ddc-45ce-8334-c7b28a9e1c3a C & L Azure developer experience content projects False
22222222-8f1c-409b-af1e-8e2e65d9b90a DevCenter - Infrastructure - Dogfood False
33333333-c080-42a7-8973-1aa853ab4df3 Babel False
Meerdere waarden opvragen en opmaken, inclusief geneste waarden
Als u meer dan één eigenschap wilt ophalen, plaatst u expressies tussen vierkante haken [ ] (een lijst met meerdere selecties) als een door komma's gescheiden lijst. De volgende query's laten zien hoe u query's uitvoert op meerdere waarden in de uitvoer van een JSON-woordenlijst, met behulp van meerdere uitvoerindelingen.
Azure CLI
az account show --query [name,id,user.name]# return multiple valuesaz account show --query [name,id,user.name]-o table # return multiple values as a table
In de volgende query's wordt het gebruik van de operator {} (multiselect hash) gedemonstreert om een woordenlijst op te halen in plaats van een matrix bij het uitvoeren van query's op meerdere waarden. Ook wordt de naam van eigenschappen in het queryresultaat gedemonstreert.
Azure CLI
az account show --query"{SubscriptionName: name, SubscriptionId: id, UserName: user.name}"# Rename the values returnedaz account show --query"{SubscriptionName: name, SubscriptionId: id, UserName: user.name}"-o table # Rename the values returned in a table
Booleaanse waarden worden verondersteld waar te zijn, dus de "[?isDefault]" querysyntaxis voor de az account list opdracht retourneert het huidige standaardabonnement. Als u de valse waarden wilt ophalen, moet u een escape-teken gebruiken, zoals \.
De volgende query's laten zien hoe u alle accounts in een abonnement opvraagt, mogelijk een JSON-matrix retourneert als er meerdere abonnementen voor een bepaald account zijn en vervolgens een query uitvoert op welk account het standaardabonnement is. Ook ziet u hoe u query's uitvoert voor de accounts die niet het standaardabonnement zijn. Deze query's zijn gebaseerd op wat u eerder hebt geleerd om de resultaten te filteren en op te maken. Ten slotte laat de uiteindelijke query zien hoe de queryresultaten in een variabele worden opgeslagen.
Azure CLI
az account listaz account list --query"[?isDefault]"# Returns the default subscriptionaz account list --query"[?isDefault]"-o table # Returns the default subscription as a tableaz account list --query"[?isDefault].[name,id]"# Returns the name and id of the default subscriptionaz account list --query"[?isDefault].[name,id]"-o table # Returns the name and id of the default subscription as a tableaz account list --query"[?isDefault].{SubscriptionName: name, SubscriptionId: id}"-o table # Returns the name and id of the default subscription as a table with friendly namesaz account list --query"[?isDefault == \`false\`]"# Returns all non-default subscriptions, if anyaz account list --query"[?isDefault == \`false\`].name"-o table # Returns all non-default subscriptions, if any, as a tableaz account list --query"[?isDefault].id"-o tsv # Returns the subscription id without quotation markssubscriptionId="$(az account list --query "[?isDefault].id" -o tsv)"# Captures the subscription id as a variable.
echo $subscriptionId# Returns the contents of the variable.az account list --query"[? contains(name, 'Test')].id"-o tsv # Returns the subscription id of a non-default subscription containing the substring 'Test'subscriptionId="$(az account list --query "[? contains(name, 'Test')].id"-o tsv) # Captures the subscription id as a variable. az account set -s$subscriptionId# Sets the current active subscription
Objecten maken met behulp van variabelen en randomisatie
Een willekeurige waarde instellen voor gebruik in volgende opdrachten
Als u een willekeurige waarde instelt en gebruikt voor gebruik in variabelen, kunt u scripts meerdere keren uitvoeren zonder naamconflicten. Naamconflicten treden op omdat een waarde uniek moet zijn binnen de service of omdat een object dat u hebt verwijderd, nog steeds bestaat in Azure totdat het verwijderingsproces is voltooid.
$RANDOM is een bash-functie (geen constante) die een willekeurig 16-bits geheel getal retourneert (van 0 tot en met 32767). De let opdracht is een ingebouwde Bash-opdracht om rekenkundige expressies te evalueren.
Met de volgende opdracht maakt u een voldoende unieke waarde voor de meeste doeleinden.
Azure CLI
let "randomIdentifier=$RANDOM*$RANDOM"
Werken met spaties en aanhalingstekens
Spaties worden gebruikt voor het scheiden van opdrachten, opties en argumenten. Gebruik aanhalingstekens om de Bash-shell te laten weten dat alle speciale tekens moeten worden genegeerd, waarvan een witruimte een speciaal teken is. Wanneer de Bash-shell het eerste aanhalingsteken ziet, worden speciale tekens genegeerd totdat het aanhalingsteken wordt gesloten.
Soms wilt u echter dat de Bash-shell bepaalde speciale tekens parseert, zoals dollartekens, aanhalingstekens en backslashes. Gebruik voor dit scenario dubbele aanhalingstekens.
De volgende opdrachten gebruiken de opdracht az group create om het gebruik van enkele en dubbele aanhalingstekens te illustreren. Deze opdrachten worden gebruikt om spaties te verwerken en speciale tekens te evalueren bij het werken met variabelen en het maken van een object.
Azure CLI
resourceGroup='msdocs-learn-bash-$randomIdentifier'
echo $resourceGroup# The $ is ignored in the creation of the $resourceGroup variableresourceGroup="msdocs-learn-bash-$randomIdentifier"
echo $resourceGroup# The $randomIdentifier is evaluated when defining the $resourceGroup variablelocation="East US"# The space is ignored when defining the $location variable
echo The value of the location variable is $location# The value of the $location variable is evaluated
echo "The value of the location variable is $location"# The value of the $location variable is evaluated
echo "The value of the location variable is \$location"# The value of the $location variable is not evaluated
echo 'The value of the location variable is $location'# The value of the $location variable is not evaluatedaz group create --name$resourceGroup--location$location# Notice that the space in the $location variable is not ignored and the command fails as it treats the value after the space as a new command az group create --name$resourceGroup--location"$location"# Notice that the space in the $location variable is ignored and the location argument accepts the entire string as the value
Controleer in de uitvoer van de JSON-woordenlijst de eigenschappen van de resourcegroep die is gemaakt.
If Then Else gebruiken om te bepalen of de variabele null is
Als u tekenreeksen wilt evalueren, gebruikt != en evalueert u getallen.-ne De volgende If Then Else-instructie evalueert of de $resourceGroup variabele is ingesteld. Zo ja, dan wordt de waarde van de variabele geretourneerd. Als dat niet het gaat, wordt de variabele ingesteld.
Azure CLI
if [ $resourceGroup != '']; then
echo $resourceGroup
else
resourceGroup="msdocs-learn-bash-$randomIdentifier"
fi
Als u vervolgens een resourcegroep wilt maken of verwijderen
Met het volgende script wordt alleen een nieuwe resourcegroep gemaakt als er nog geen resourcegroep met de opgegeven naam bestaat.
Azure CLI
if [ $(az group exists --name$resourceGroup) = false]; then
az group create --name$resourceGroup--location"$location"
else
echo $resourceGroup
fi
Met het volgende script wordt een bestaande nieuwe resourcegroep verwijderd als er al een met de opgegeven naam bestaat. U kunt het argument gebruiken om het --no-wait besturingselement te retourneren zonder te wachten tot de opdracht is voltooid. Voor dit artikel willen we echter wachten totdat de resourcegroep is verwijderd voordat u doorgaat. Zie Tips voor het gebruik van de Azure CLI - Asynchrone bewerkingen voor meer informatie over asynchrone bewerkingen.
We demonstreren het gebruik van het --no-wait argument aan het einde van dit artikel.
Azure CLI
if [ $(az group exists --name$resourceGroup) = true]; then
az group delete --name$resourceGroup-y# --no-wait
else
echo The $resourceGroup resource group does not exist
fi
Grep gebruiken om te bepalen of er een resourcegroep bestaat en de resourcegroep te maken als deze niet bestaat
Met de volgende opdracht wordt de uitvoer van de az group list opdracht naar de grep opdracht uitgevoerd. Als de opgegeven resourcegroep niet bestaat, maakt de opdracht de resourcegroep met behulp van de eerder gedefinieerde variabelen.
Azure CLI
az group list --output tsv | grep $resourceGroup-q || az group create --name$resourceGroup--location"$location"
Case-instructie gebruiken om te bepalen of er een resourcegroep bestaat en de resourcegroep te maken als dit niet het geval is
Met de volgende CASE-instructie wordt alleen een nieuwe resourcegroep gemaakt als er nog geen resourcegroep met de opgegeven naam bestaat. Als er een met de opgegeven naam bestaat, echot de CASE-instructie dat de resourcegroep bestaat.
Azure CLI
var=$(az group list --query"[? contains(name, '$resourceGroup')].name"--output tsv)
case $resourceGroup in
$var)
echo The $resourceGroup resource group already exists.;;
*)
az group create --name$resourceGroup--location"$location";;
esac
Gebruiken voor lussen en het uitvoeren van query's op matrices
In deze sectie van het artikel maken we een opslagaccount en gebruiken we vervolgens voor lussen om blobs en containers te maken. We demonstreren ook het uitvoeren van query's op JSON-matrices en het werken met omgevingsvariabelen.
Een opslagaccount maken
De volgende opdracht maakt gebruik van de opdracht az storage account create om een opslagaccount te maken dat we gebruiken bij het maken van opslagcontainers.
De volgende opdrachten gebruiken de opdracht az storage account keys list om waarden voor de sleutel van het opslagaccount te retourneren. Vervolgens slaan we een sleutelwaarde op in een variabele voor gebruik bij het maken van opslagcontainers.
Azure CLI
az storage account keys list --resource-group$resourceGroup--account-name$storageAccount--query"[].value"-o tsv # returns both storage account key valuesaz storage account keys list --resource-group$resourceGroup--account-name$storageAccount--query"[0].value"-o tsv # returns a single storage account key valueaccountKey=$(az storage account keys list --resource-group$resourceGroup--account-name$storageAccount--query"[0].value"-o tsv)
echo $accountKey
Vervolgens maken we meerdere containers met behulp van een lus die een aantal manieren demonstreert om de lus te schrijven.
Azure CLI
for i in `seq 14`; do
az storage container create --account-name$storageAccount--account-key$accountKey--name learnbash-$i
done
for value in {5..8}
for (( i=5; i<10; i++));
do
az storage container create --account-name $storageAccount --account-key $accountKey --name learnbash-$i
done
az storage container list --account-name $storageAccount --account-key $accountKey --query [].name
EXPORT gebruiken om omgevingsvariabelen te definiëren
In de voorgaande opslagcontainerscripts hebben we de accountnaam en accountsleutel opgegeven met elke opdracht. In plaats daarvan kunt u uw verificatiereferenties opslaan met behulp van de bijbehorende omgevingsvariabelen: AZURE_STORAGE_ACCOUNT en AZURE_STORAGE_KEY. Gebruik EXPORTEREN om deze actie uit te voeren.
Azure CLI
export AZURE_STORAGE_ACCOUNT=$storageAccount
export AZURE_STORAGE_KEY=$accountKeyaz storage container list # Uses the environment variables to display the list of containers.
Met het volgende script maakt u een metagegevenstekenreeks en gebruikt u vervolgens de opdracht az storage container metadata update om een container met die tekenreeks bij te werken, opnieuw met behulp van de omgevingsvariabelen.
Azure CLI
metadata="key=value pie=delicious"# Define metadataaz storage container metadata update \
--name$container \
--metadata$metadata# Update the metadataaz storage container metadata show \
--name$containerName# Show the metadata
De volgende opdracht maakt gebruik van de opdracht az storage container delete om één benoemde container te verwijderen en vervolgens meerdere containers in een lus te verwijderen.
Azure CLI
az storage container delete \
--name$container
Haal een lijst op met containers met een specifiek voorvoegsel en sla resultaten op in een variabele.
Verwijder de lijst met containers in een lus met behulp van het --prefix argument.
Azure CLI
for row in $containerList
do
tmpName=$(echo $row | sed -e's/\r//g')
az storage container delete \
--name$tmpName
done
Foutafhandeling
Als u een script onmiddellijk wilt afsluiten als een opdracht een niet-nulstatus retourneert, voert u de volgende opdracht uit:
Azure CLI
set -e
Voer de volgende opdrachten uit voor meer informatie over het instellen van Shell-opties en andere Help-opdrachten:
Azure CLI
help set
help help
Resources opschonen
Nadat u dit artikel hebt voltooid, verwijdert u de resourcegroep en alle resources erin. Gebruik het --no-wait argument.
Azure CLI
if [ $(az group exists --name$resourceGroup) = true]; then
az group delete --name$resourceGroup-y--no-wait
else
echo The $resourceGroup resource group does not exist
fi
De bron voor deze inhoud vindt u op GitHub, waar u ook problemen en pull-aanvragen kunt maken en controleren. Bekijk onze gids voor inzenders voor meer informatie.
Azure CLI-feedback
Azure CLI is een open source project. Selecteer een koppeling om feedback te geven:
Azure HPC is een speciaal gebouwde cloudmogelijkheid voor HPC & AI-workload, met behulp van toonaangevende processors en HPC-klasse InfiniBand-interconnect, om de beste toepassingsprestaties, schaalbaarheid en waarde te leveren. Met Azure HPC kunnen gebruikers innovatie, productiviteit en bedrijfsflexibiliteit ontgrendelen via een maximaal beschikbare reeks HPC & AI-technologieën die dynamisch kunnen worden toegewezen wanneer uw bedrijf en technische behoeften veranderen. Dit leertraject is een reeks module