如何在重定向期间运行bash命令<< EOF

时间:2014-06-29 04:40:40

标签: mysql bash shell eof io-redirection

我知道有一些方法可以在重定向期间运行bash命令,但我不知道它是如何完成的。

我想做这样的事情:

#!/bin/bash
mysql -uUser -pPasswd << EOF
echo 'I wanna echo something by using echo which is run by bash'
use Mydb
some sql commands here
commit;
EOF

我曾经错误地使用“in the”&lt;&lt; EOF“,但现在未能成功。

2 个答案:

答案 0 :(得分:5)

您可以在mysql命令行客户端中使用system command

#!/bin/bash
mysql -uUser -pPasswd << EOF
system echo 'I wanna echo something by using echo which is run by bash';
use Mydb
some sql commands here
commit;
EOF

答案 1 :(得分:1)

除了使用heredoc从bash与MySQL交互之外,你可以简单地以批处理模式调用mysql。当您有相当短的查询并且无需从heredoc体内调用系统时,这非常有用。 bash中的一般形式是:

$(mysql -uuser -hhost database.table -Bse "any valid mysql command")

(如果在查询中标识了.table,你可以省略它)为了处理mysql返回的信息,通常建议将信息返回给数组:

results=( $(mysql -uuser -hhost database.table -Bse "any valid mysql command") )

在这方面,您可以更灵活地构建脚本。