我知道有一些方法可以在重定向期间运行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“,但现在未能成功。
答案 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") )
在这方面,您可以更灵活地构建脚本。