назначить объявленную переменную массива

last_log_date=$(date -d '${str_last_log_date}' +%s)

Следует обновить до (удалить одинарные кавычки):

last_log_date=$(date -d ${str_last_log_date} +%s)
0
30.09.2019, 22:05
2 ответа

Чтобы создать новую переменную массива, присвойте значения старого массива новому массиву следующим образом:

my_databases=(value1 value2 value3)
new_array=("${my_databases[@]}")

Если вы используете

new_array=$my_databases

новая переменная не будет массивом (если вы не используетеdeclare -a new_array=$my_databases$my_databasesрасширяется только до первого значения массива.

3
28.01.2020, 02:14

Я предполагаю, что вы хотите создать копию массива. Затем используйте ответ @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
3
28.01.2020, 02:14

Теги

Похожие вопросы