2014-10-27 157 views
0

我得到一些mysql的信息从壳这样的:意外结束

#!/bin/bash 
keyOrPass=$1 
intercom=$2 
flat=$3 
number=$4 
mysql -ulogin -ppassword db_name << EOF 
select codeGuestEmail, codePrivateEmail from mbus_clients WHERE flat=$flat and domophone=$intercom; 
EOF 

我发现一些教程此解决方案,但它说: 检查对应于你的MySQL服务器手册在'EOF'附近使用正确语法的版本 有什么问题?我怎样才能完成mysql会话? http://www.cyberciti.biz/faq/using-mysql-in-shell-scripts/这里是我找到解决方案的教程示例。
UPDATE为EOF添加不同的引号不起作用。

在查询

回答

1

通过带有引号的动态变量..

select codeGuestEmail, codePrivateEmail from mbus_clients WHERE flat='$flat' and domophone='$intercom'; 

或尝试用这种

select codeGuestEmail, codePrivateEmail from mbus_clients WHERE flat=${flat} and domophone=${intercom}; 
+0

第一变体不与我的变种而且帮助我得到了你的第一个唐正确的结果't – 2014-10-27 10:10:53

+0

第二个变体的作品,但仍然EOF错误。 – 2014-10-27 10:11:49

+0

您还可以采用另一种方法,将sql编写在单独的文件中并设置动态变量,如'set @intercom = $ {intercom}',然后从该shell脚本中调用sql文件 – 2014-10-27 10:13:45