передача массива json с пробелами в скрипт bash для тегов az cli - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть сценарий bash, который выглядит следующим образом и правильно передает теги в az cli с пробелами.

RESOURCE_GROUP_NAME=$1
LOCATION=$2
TAGS_INPUT_ARGUMENT=$3 # This TAGS_INPUT_ARGUMENT needs to finally look like the TAGS below.

echo 'TAGS_INPUT_ARGUMENT:' $TAGS_INPUT_ARGUMENT

# HARD CODED TAGS that Work
TAGS=("owner=Firstname Lastname" "application=cool-name")
echo 'TAGS:' "${TAGS[@]}"

az group create \
--name $RESOURCE_GROUP_NAME \
--location $LOCATION \
--tags "${TAGS[@]}"

У меня проблемы с передачей тегов в сценарий.
то есть

export TAGS='["owner=Firstname Lastname","application=cool-name"]'
bash ./entrypoint.sh rg-lionking eastus2  "${TAGS}"    

Вывод:

TAGS_INPUT_ARGUMENT: ["owner=Firstname Lastname","application=cool-name"]
TAGS: owner=Firstname Lastname application=cool-name
{
  "id": "/subscriptions/**REDACTED**/resourceGroups/rg-lionking",
  "location": "eastus2",
  "managedBy": null,
  "name": "rg-lionking",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": {
    "application": "cool-name",
    "owner": "Firstname Lastname"
  },
  "type": "Microsoft.Resources/resourceGroups"
}

Учитывая, что я могу получить TAGS в хорошем состоянии, что мне нужно сделать, чтобы пройти то же самое в формате json и заставить его работать как последний аргумент для группы az create cli?

Мои знания jp практически равны нулю, поэтому я предполагаю, что ответ где-то там лежит.

1 Ответ

0 голосов
/ 21 апреля 2020

Эквивалент расширения массива в командной строке передает несколько отдельных аргументов

./entrypoint rg-lionking eastus2 "owner=Firstname Lastname" "application=cool-name"

... и затем в entrypoint:

#!/usr/bin/env bash
resource_group_name=$1; shift
location=$1; shift
tags=( "$@" )

az group create \
  --name "$resource_group_name" \
  --location "$location" \
  --tags "${tags[@]}"
...