2017-09-29 1 views
0

Si j'exécute cette commande à partir de l'interface de ligne de commande Azure, j'obtiens un vrai faux selon que le groupe de ressources existe réellement. Fonctionne très bien.Format correct pour définir la variable sur la sortie d'une commande

az group exists –n MyResourceGroup 

Il fonctionne également sous cette forme:

az group exists –n MyResourceGroup 

Si, dans un script bash je tente de définir une variable à la sortie de ces commandes:

GROUPEXISTS1="$(az group exists --name MyResourceGroup)" 
GROUPEXISTS2="$(az group exists –n MyResourceGroup)" 

Seul le premier on travaille. Quand j'utilise -n j'obtiens l'erreur suivante:

az: error: unrecognized arguments: –n MyResourceGroup

Cependant je sais que la commande fonctionne avec le paramètre -n. Dois-je encoder un seul tiret en l'utilisant dans "$()"? Pourquoi autrement n'accepterait-il pas ce formulaire?

+1

Utilisez-vous des produits de Microsoft pour écrire des scripts bash? '-'! =' -' – Cyrus

Répondre

2

On dirait que votre éditeur remplace le trait d'union moins - (U + 002D) avec le tiret . Ce sont des caractères différents. Bash et d'autres obus semblables à unix traitent le tableau de bord comme un omble commun, pas un début d'option. Si vous avez beaucoup de fichiers de script déjà écrit et je ne sais pas s'il y a des tirets au lieu de moins, vous pouvez les convertir automatiquement avec la commande comme

sed -i 's/–/-/g' your-script-file 
0

Vous pouvez vérifier soigneusement votre script. –n est différent de –n. Dans Azure Cloud Shell, vous pouvez clairement voir la différence.

enter image description here

Modifier votre script comme ci-dessous:

GROUPEXISTS2="$(az group exists -n MyResourceGroup)"