Я предполагаю, что вы хотите создать копию массива. Затем используйте ответ @Freddy.
Если вы хотите создать ссылку на те же данные, в последних версиях bash есть «namerefs»:
$ my_databases=(value1 value2 value3)
$ declare -n new_array=my_databases
Тогда:
$ for i in "${!new_array[@]}"; do printf "%d\t%s\n" $i "${new_array[i]}"; done
0 value1
1 value2
2 value3
но если изменить первый массив, изменения будут видны в "новом":
$ my_databases[2]="updated value 3"
$ for i in "${!new_array[@]}"; do printf "%d\t%s\n" $i "${new_array[i]}"; done
0 value1
1 value2
2 updated value 3
Ваше сообщение об ошибке не unmatched
, а unmatched "
, так как в нем есть непревзойденный символ кавычки, "
.
Часть /Users/fridavbg/.zshrc:116
поясняет, что эта ошибка была обнаружена в файле /Users/fridavbg/.zshrc
в строке 116
.
Таким образом, вы должны посмотреть в этом файле вокруг указанной строки на наличие несопоставленных кавычек. Обратите внимание, что иногда указанная строка не является той строкой, в которой есть ошибка. Если вы не нашли ошибку в указанной строке, она может быть до этой строки, а иногда и после нее.
Пример:
command1 "missing quote at the end
command2 ""
Здесь кавычка, начатая в первой строке, продолжается до первого символа кавычки во второй строке,и кавычка, начинающаяся со второго символа кавычки, не завершается.