在bash中将stdout重定向到mysql

时间:2018-06-25 10:54:49

标签: mysql bash pipe io-redirection

我可以执行如下所示的mysql传递文件。

mysql -u username -p < some_file

在bash脚本中,我有一个函数可以回显我想传递给bash脚本中相同命令的输出。

some_function() {
    echo "Some SQL"
}

如何使用管道/重定向将输出传递到mysql中?

我尝试了以下操作,但是失败,没有这样的文件或目录。我该如何在这里使用函数的输出。

mysql -u username -p < some_function

1 个答案:

答案 0 :(得分:0)

在这种情况下,无需使用管道或重定向,您可以直接使用-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