Я могу выполнить mysql в файле следующим образом.
mysql -u username -p < some_file
В сценарии bash у меня есть функция, которая выводит эхо-результат, который я хочу передать в ту же команду в сценарии bash.
some_function() {
echo "Some SQL"
}
Как передать вывод в mysql с помощью pipe/redirection?
Я пробовал следующее, но он не работает без такого файла или каталога. Как я могу использовать вывод функции здесь.
mysql -u username -p < some_function
Нет необходимости использовать канал или перенаправление в этом случае, вы можете использовать непосредственно -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
-e
. Вы можете перехватить вывод вашей функции и передать его в качестве аргумента, например, sql_command="$(your_function)"; mysql -u username -p -e "${sql_command}" database_name;
some_function | mysql -u username -p
.