2016-12-05 7 views
0

Мне нужно сделать резервную копию моей базы данных с помощью инструмента mysqldump. В моей тестовой таблице есть столбец TIMESTAMP, который я должен использовать в качестве фильтра. Я использую Баш скрипт со следующим кодом:Как избежать цитат mysqldump в bash?

#!/bin/bash 
cmd="mysqldump --verbose --opt --extended-insert --result-file /home/backups/mysql/test/test_table.20161205.bak test --where=\"timestamp_c>='2016-12-03 00:00:00'\" --tables \"test_table\"" 
echo $cmd 
$cmd 

Я печатая команду, которую я предполагаю, должен работать. Вышеприведенный сценарий производит выход:

mysqldump --verbose --opt --extended-insert --result-file /home/backups/mysql/test/test_table.20161205.bak test --where="timestamp_c>='2016-12-03 00:00:00'" --tables "test_table" 

Если я копирую печатную команду на терминал, это работает; Однако , команда на сценарии печати ошибки:

mysqldump: Couldn't find table: "00:00:00'"" 

Есть ли что-то, что я не понимая о кавычке бежать?

+0

Если вы не впрыскиваете переменные, я не вижу преимуществ в использовании строк с двумя кавычками. –

ответ

2

Переменные содержат данные, а не код. Определите функцию вместо этого.

cmd() { 
    mysqldump --verbose --opt --extended-insert \ 
      --result-file /home/backups/mysql/test/test_table.20161205.bak test \ 
      --where="timestamp_c>='2016-12-03 00:00:00'" \ 
      --tables "test_table" 
} 
+0

Этот подход работает отлично, избегая грязного кода, разрешенного «eval». – Takumi

-1

Попробуйте выполнить команду, используя 'eval'. Пример:

#!/bin/bash 
cmd="mysqldump --verbose --opt --extended-insert --result-file /home/backups/mysql/test/test_table.20161205.bak test --where=\"timestamp_c>='2016-12-03 00:00:00'\" --tables \"test_table\"" 
eval $cmd 
+0

Wont 'eval' оценивает значение строки, а затем выполняет ее? Я не вижу причины для нисходящего потока. Пожалуйста, предложите объяснение. – yogur

+0

Переменные не должны содержать код. Вместо этого можно использовать функцию. – andlrc

+0

@andlrc Это правда, но я просто предложил ответ на конкретный вопрос Такуми. – yogur

 Смежные вопросы

  • Нет связанных вопросов^_^