Это должен быть комментарий, потому что только этот путь это будет также работать для запущения скрипта как "interpretername scriptname". Я не знаю об источнике"!".
Можно сделать это легко использование source
управляйте, чтобы импортировать содержание другого файла в текущую среду оболочки (в Вашем случае Ваш сценарий) и выполнить его туда.
В db.conf
:
username="username"
password="password"
database="database"
В Вашем сценарии:
#!/bin/sh
source /path/to/db.conf
cd /home/sh
dumpfile_name=$database-$(date +%d%m%Y).sql
mysqldump -u"$username" -p"$password" --opt "$database" > $dumpfile_name
gzip $dumpfile_name
Примечания:
=
оператор присваивания при присвоении переменных оболочки!cd
операция к перед mysqldump
управляйте так, чтобы Вы не должны были бы указывать путь для выходного файла, так как это - текущий каталог. Просто сохраняет дублированный код.Править: Даже с тем сделанным шагом, кажется, что это - непродуманное решение меня. Вы могли бы интересоваться тем, как можно передать значения с помощью аргументов. Например, Вы могли взять твердый кодированный путь к файлу конфигурации из сценария выше и заменить его этим:
#!/bin/sh
source "$1"
cd /home/sh
[...] # rest of script as above
Вы могли затем выполнить его как ./mysqlbackup.sh /path/to/db.conf
. Вы могли даже взять это шаг дальше и просто записать все это в одном сценарии и обеспечить все три значения как аргументы:
#!/bin/sh
username="$1"
password="$2"
database="$3"
cd /home/sh
[...] # rest of script as above
... и назовите его как ./mysqlbackup.sh username password database
.
Вы могли изменить первый файл на:
s/username/joe/
s/password/secret/
s/database/c2duo_db/g
сохраните его как db.sed и назовите его с
sed -f db.sed mysqlbackup.sh > joeSqlbackup.sh
Для различных пользователей/паролей и баз данных Вы генерировали бы различные sed-сценарии.