Проблема в перенаправлении стандартного ввода и вывода

Я хочу взять backup из моих mysql данных, используя mysqldump. У меня есть три файла, содержащие имена mysql tables построчно. Мой сценарий имеет эту строку -

mysqldump -h localhost -uroot --lock-tables=false db < $2 > ~/backup/$name'.sql'

Я использую getopts для обработки некоторых options. Так что в основном $2 это файл, который я собираюсь предоставить. Этот файл имеет - table1 и table2. Таким образом, эта команда должна создавать резервные копии только этих двух таблиц.

Но когда я cat файл ~/backup/name.sql, он показывает всю резервную копию db. Я не уверен, если это объединенная резервная копия всех таблиц из всех 3 файлов или всей БД. Но он берет резервную копию всей базы данных вместо двух таблиц.

Что я делаю не так?

Это работает нормально, когда я говорю это так -

mysqldump -h localhost -uroot --lock-tables=false db table1 table2 >  ~/backup/$name'.sql'
0
задан 9 October 2012 в 10:38

2 ответа

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

mysqldump -h localhost -uroot --lock-tables=false db `cat $2` > ~/backup/$name'.sql
0
ответ дан 9 October 2012 в 10:38

Причина сбоя заключается в том, что mysqldump не читает стандартный ввод; table1 и table2 являются (необязательными) аргументами, но вы предоставляете их не в командной строке, а в stdin.

Если $2 является именем файла файла, содержащего одну строку с текстом table1 table2, то должно работать следующее:

mysqldump -h localhost -uroot --lock-tables=false db `cat $2` > ~/backup/$name'.sql'

Bash расширит эту командную строку до [ 119]

mysqldump -h localhost -uroot --lock-tables=false db table1 table2 > /home/user/backup/somename.sql

- это то, что вы хотите запустить.

Однако, так как вы в любом случае используете getopt, возможно, вы могли бы поместить «table1» в $2 и «table2» в $3 и запустить просто

mysqldump -h localhost -uroot --lock-tables=false db $2 $3 > ~/backup/$name'.sql'
0
ответ дан 9 October 2012 в 10:38

Другие вопросы по тегам:

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