У меня есть скрипт, который создает дамп базы данных MySQL и сжимает файл. То, что я хочу сделать, это иметь другой (редактировать) файл, который может изменить имя пользователя, пароль и имя базы данных. Затем каким-то образом подключите этот файл к этому сценарию.
В другом файле я хочу что-то, что говорит, например.
username = "username"
password = "password"
database = c2duo_db
Затем в имени скрипта mysqlbackup.sh некоторые импортируют пароль пользователя и базу данных из файла.
#!/bin/sh
mysqldump -u"username" -p"password" --opt c2duo_db > /home/sh/c2duo_db-`date +%d%m%Y`.sql
cd /home/sh
tar -zcvf c2duo_db-`date +%d%m%Y`.tar.gz *.sql
Ответы:
Вы можете легко сделать это, используя
source
команду, чтобы импортировать содержимое другого файла в текущую среду оболочки (в вашем случае ваш скрипт) и запустить его там.В
db.conf
:В вашем скрипте:
Примечания:
=
оператора присваивания при назначении переменных оболочки!cd
операцию на передmysqldump
командой, чтобы вам не пришлось указывать путь к выходному файлу, поскольку это текущий каталог. Просто сохраняет дублированный код.Редактировать: Даже после того, как этот шаг сделан, кажется, что это наполовину испеченное решение для меня. Возможно, вас заинтересует, как вы можете передавать значения, используя аргументы. Например, вы можете взять жестко закодированный путь к файлу конфигурации из приведенного выше сценария и заменить его следующим:
Вы могли бы тогда выполнить это как
./mysqlbackup.sh /path/to/db.conf
. Вы могли бы сделать еще один шаг вперед и просто написать все в одном скрипте и указать все три значения в качестве аргументов:... и назовите это как
./mysqlbackup.sh username password database
.источник
Вы можете изменить первый файл на:
сохраните его как db.sed и назовите
Для разных пользователей / паролей и баз данных вы должны создавать разные sed-скрипты.
источник