Я новичок в написании скриптов на Bash и в настоящее время столкнулся с небольшой проблемой при работе с циклами for, массивами и присваиванием/подстановкой переменных, которую я не знаю, как решить. Поскольку я буквальноновый, я даже не знаю, как это посмотреть. Хотя так может сказать каждый, я подчеркиваю, что это не домашнее задание или что-то в этом роде - мне просто нужно реорганизовать огромный объем данных для последующей обработки, и я подумал, что сделаю это несколькоумныйпока изучаю Bash.
Фон: У меня есть каталог, который сам содержит три подкаталога - Folder1, Folder2, Folder3. Каждый подкаталог имеетодинФайл data.txt. Каждый файл data.txt содержит три столбца с фиксированным количеством строк.
Цель: Я хочу запустить Bash-скрипт из основного каталога, который перебирает подкаталоги и выполняет следующее:
- он вводит и получает доступ к data.txt;
- он считывает каждый столбец в соответствующий массив
arr1
,arr2
,arr3
(они очищаются/сбрасываются при входе в следующий подкаталог); - он читает
arr2[0]
вearr1
,arr2[1]
вearr2
, ...,arr2[j-1]
вearr$j
. Подобная структура применяется для данных вarr3
. Ониearr$j
сохраняют данные из прошлых итераций и составляют мои желаемые выходные массивы. С каждым проходом нового каталога данные добавляются к ним.
Звучит слишком сложно - но это структура данных, с которыми мне приходится работать. По большей части я нашел работающее решение (конечно, возможно, не лучшее).
Проблема: По какой-то причине, которую я не могу определить, я получаю всевозможные ошибки при каждой попытке добавления as earr$j+=(${arr2[j-1]})
(и всевозможных вариаций, которые я пробовал) в цикле над j
. Ниже приведен фрагмент, который вызывает у меня проблемы. Я был бы признателен, если бы кто-нибудь мог указать, в чем проблема, и, если возможно, предоставить рабочий пример решения.
Рассматриваемый цикл for:
for j in $(seq 1 $number_of_lists); do echo "(${arr2[j-1]})"; earr$j+=(${arr2[j-1]}); echo "(${arr3[j-1]})"; done
В частности, у меня проблема с этой earr$j+=(${arr2[j-1]})
частью. Вот мой вывод ошибки:
./next.sh: line 33: syntax error near unexpected token "${arr2[j-1]}''
и ./next.sh: line 33: earr$j+=('${arr2[j-1]}')
.
Заранее спасибо за любые предложения.