Перенаправление stdout на mysql в bash - PullRequest
0 голосов
/ 25 июня 2018

Я могу выполнить передачу mysql в файл следующим образом.

mysql -u username -p < some_file

В скрипте bash у меня есть функция, которая отображает вывод, который я хочу передать в ту же команду в скрипте bash.

some_function() {
    echo "Some SQL"
}

Как я могу передать вывод в mysql с помощью pipe / redirection?

Я пробовал следующее, но это не удается без такого файла или каталога.Как я могу использовать вывод функции здесь вместо этого.

mysql -u username -p < some_function

1 Ответ

0 голосов
/ 25 июня 2018

Нет необходимости использовать канал или перенаправление в этом случае, вы можете напрямую использовать -e параметры для выполнения некоторых команд SQL:

mysql -u username -p -e "SQL/MySQL commands"

Пример для конкретной базы данных:

mysql -u username -p -e "use database_name; SHOW tables"
mysql -u username -p -e "SHOW tables" database_name

И вы также можете перехватить выходные данные команды или функции и передать их в качестве аргумента следующим образом:

sql_command="$(your_function)"
mysql -u username -p -e "${sql_command}" database_name;

Если вы действительно хотите использовать канал или перенаправление (но я думаю, что это делаетнет смысла в этом случае):

$ mysql -u root -p database_name < <(echo "SHOW TABLES") # redirection
$ mysql -u root -p database_name <<< "$(echo "SHOW TABLES")" # another way to use redirection
$ echo "SHOW TABLES"|mysql -u root -p database_name # pipe
...