Рейтинг:0

Сценарий оболочки не читает файл, как ожидалось

флаг cn

Ниже приведен скрипт, который пытается выполниться:

читать н
для ((i=1;i<=$n;i++))
делать
файл=создатьсервер"$i".json
эхо $ файл
instanceid[$i-1]=$(jq -r '.instance.id' ./$file)
эхо $instanceid
сделано

$file отображает правильное значение. Однако $instanceid — нет. Вывод, который я получаю, выглядит следующим образом:

создатьсервер1.json
a5a485df-b2e8-4467-9144-d012d96d0305
создатьсервер2.json
**a5a485df-b2e8-4467-9144-d012d96d0305**

Тот, что выделен жирным шрифтом выше, не такой, как ожидалось. Два файла, из которых идентификатор экземпляра фиксируется как присутствующие, и их содержимое следующее:

{"экземпляр":{"id":"a5a485df-b2e8-4467-9144-d012d96d0305","os":"Ubuntu 18.04 LTS x64"}}
{"экземпляр":{"id":"4a8ebe11-be1c-45f9-a82c-c41113ecd3a5","os":"Ubuntu 18.04 LTS x64"}}

Когда содержимое в файлах разное, почему скрипт всегда берет содержимое из самого первого файла. Я что-то пропустил? Пожалуйста, направляйте.

Рейтинг:1
флаг gb

два способа, которые вы можете попробовать:

читать н
для ((i=1;i<=$n;i++))
делать
файл=создатьсервер"$i".json
эхо $ файл
instanceid[$i-1]=$(jq -r '.instance.id' ./$file)
эхо ${instanceid[$i-1]}
сделано

или же

читать н
для ((i=1;i<=$n;i++))
делать
файл=создатьсервер"$i".json
эхо $ файл
instanceid[$i-1]=$(jq -r '.instance.id' ./$file)
сделано
для i в ${!instanceid[@]}; выполнить эхо ${instanceid[$i]}; сделано

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.