У меня есть следующий отрывок из сценария 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