Shell脚本执行mysql命令时一直报错use: command not found。
shell脚本如下:
echo “----------start”
mysql -uroot -p(密码)
use tempdb
select * from t_contract;
echo “----------end”
初步预测是我的use命令执行不了,于是我换了sql命令
echo “----------start”
mysql -uroot -p(密码)
drop database if exists tempdb;
create database tempdb;
use tempdb
echo “----------end”
换成如上又报drop: command not found。所以我更确定是执行不了sql命令。
于是搜了搜,我给命令加了EOF解决了,加后的脚本如下:
echo “----------start”
mysql -uroot -p(密码) >>EOF
drop database if exists tempdb;
create database tempdb;
use tempdb
EOF
echo “----------end”
搜出来EOF的这么一段解释:
Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell。可以把EOF替换成其他东西,意思是把内容当作标准输入传给程序。
回顾一下< <的用法。当shell看到< <的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。这个分界符可以是你所定义的任何字符串。