#bash #amazon-web-services #azure #terraform
#удар #amazon-веб-сервисы #лазурь #терраформирование
Вопрос:
У меня есть вывод ниже, который представляет собой список с именем customerdata строк. при попытке экспортировать первый элемент в списке он успешно экспортируется как test.csv, но я пытаюсь использовать цикл for для экспорта всех элементов в table.csv из списка с помощью команды bash в terraform, это приводит к ошибке
"08-12-2021,network,bkz-net,tst", "08-12-2021,network,bkz-net,tst", "08-12-2021,network,bkz-net,tst", "08-12-2021,network,bkz-net,tst", "08-12-2021,network,bkz-net,tst", customerdata = join("n",local.finallist) } resource "null_resource" "billingcsv" { provisioner "local-exec" { //command = "echo ${local.customerdata[0]} gt; test.csv" command = "for item in ${"local.customerdata[@]"} ; do echo $item ; done gt; table.csv" } }
Ошибка
Error running command 'for item in local.billdata[@] ; do echo $item ; done gt; file.csv': exit status 1. Output: item was unexpected at this time.
Похоже, проблема с синтаксисом, пробовал различные изменения, но все равно не удается с той же ошибкой. Пожалуйста, расскажите о том, что необходимо сделать. Примечание — Я пытаюсь выполнить команды bash с помощью terraform в ОС Windows
Заранее спасибо
Комментарии:
1.
local.customerdata[@]
должна быть оценена с помощью Terraform. Это неbash
ссылка на массив.2. как этого можно достичь? pl помогите
3. каким-то образом эта команда работает echo ${local.customerdata[0]} gt; test.csv это выводит первое значение в списке
4. У вас двойные кавычки внутри двойных кавычек, это, вероятно, не сделает того, чего вы ожидаете. Возможно, вы имели
command = "for item in ${local.customerdata[@]} ; do...
в виду, что если приведенный вами пример echo работает так, как показано, это предложение должно решить вашу проблему.5. Использование
@
bash
-это функция массива, а не функция массива терраформирования. Использование целочисленного индекса работает в обоих случаях.