Оболочка: переменная в цикле - PullRequest
0 голосов
/ 18 марта 2019

Мне нужна помощь.Я хочу сделать резервную копию нескольких баз данных, но переменная пути отсутствует в выводе.Это мой код.

DB_BACKUP_PATH='/home/test'
DATABASE_NAMES='db_test_1 db_test_2 db_test_3'

for db_name in "${DATABASE_NAMES[@]}"
do
    echo $DB_BACKUP_PATH/$db_name
done

Вывод

/home/test/db_test_1 db_test_2 db_test_3

Вместо этого я хочу, чтобы он был

/home/test/db_test_1 /home/test/db_test_2 /home/test/db_test_3

1 Ответ

1 голос
/ 18 марта 2019

Вы должны попробовать это таким образом.

DB_BACKUP_PATH='/home/test'
declare -a arr=("db_test_1" "db_test_2" "db_test_3")
for db_name in "${arr[@]}"
do
   echo "$DB_BACKUP_PATH/$db_name"
done

ИЛИ, если вы хотите создать массив с помощью переменной, попробуйте:

DB_BACKUP_PATH='/home/test'
DATABASE_NAMES='db_test_1 db_test_2 db_test_3'
IFS=' ' read -r -a arr <<< "$DATABASE_NAMES"
for db_name in "${arr[@]}"
do
   echo "$DB_BACKUP_PATH/$db_name"
done

Вывод будет следующим.

/home/test/db_test_1
/home/test/db_test_2
/home/test/db_test_3
...