Назад | Перейти на главную страницу

Назначение переменной Bash с использованием другой переменной как части

У меня есть следующий отрывок из сценария bash, используемого для резервного копирования базы данных.

#!/bin/bash
DB=database_name
DBUSER=username
FILENAME=$DB_$(date +%s).sql

Я пытаюсь повторно использовать значение DB в пределах FILENAME присвоение переменной, но это не позволит мне использовать подстановку таким образом. Я просто получаю метку времени для имени файла.

Можно ли добиться того, чего я хочу, и если да, то каков синтаксис?

Спасибо.

Проблема в том, что bash не знает, что вы имеете в виду $DB вместо того $DB_ (что является вполне допустимым именем для переменной).

Лучший вариант - указать имя переменной явно, заключив ее имя в фигурные скобки:

FILENAME=${DB}_$(date %s).sql

Это избавит вас от необходимости экранировать другие символы, которые не следует интерпретировать как часть имени переменной.

Либо используйте фигурные скобки, чтобы изолировать переменную. Думаю, это немного яснее, чем цитировать.

FILENAME=${DB}_$(date +%s).sql

Заключите подчеркивание в двойные кавычки (или одинарные кавычки для более сильных):

#!/bin/bash
DB=database_name
DBUSER=username
FILENAME=$DB"_"$(date +%s).sql