Хочу, чтобы отдельный файл сохранил mysql имя пользователя, пароль и имя базы данных

Это должен быть комментарий, потому что только этот путь это будет также работать для запущения скрипта как "interpretername scriptname". Я не знаю об источнике"!".

2
18.02.2016, 02:31
2 ответа

Можно сделать это легко использование 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

Примечания:

  • Вы никогда не должны помещать пространство после = оператор присваивания при присвоении переменных оболочки!
  • Я сделал пару вещей к очистке Ваш код. Я не добавил, что новый дамп в единственный файл tar как Вы делал. Я действительно показывал, как можно сжать отдельный файл. Если Вы хотели смолить его так, они были всеми в одном архиве, можно сделать это также, но я нахожу, что сжимающийся человек выводит довольно полезные файлы.
  • Я переместился 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.

5
27.01.2020, 21:57
  • 1
    Это точно, что я ищу. Спасибо ре –  Shehzad009 25.07.2011, 13:42

Вы могли изменить первый файл на:

s/username/joe/
s/password/secret/
s/database/c2duo_db/g

сохраните его как db.sed и назовите его с

sed -f db.sed mysqlbackup.sh > joeSqlbackup.sh

Для различных пользователей/паролей и баз данных Вы генерировали бы различные sed-сценарии.

0
27.01.2020, 21:57

Теги

Похожие вопросы