2013-05-17 57 views
0

制作脚本通过bash从MySQL数据库打印出数据,我遇到了以下问题: 虽然我尝试登录,但它使用密码作为登录的数据库。MySQL如何在bash中使用变量?

脚本是这样的:

#!/bin/bash 
echo $1 
db=$1 
pasx=$2 
CMD="use $db; select * from job_log;" 
mysql -u sqluser -p "${pasx}" -e "$CMD" 

如果我要使用命令

[email protected]:/path/with/file$ sh sql.sh ok hobo 

的MySQL运行该脚本返回以下:

用户@服务器:/path/with/file $ sh sql.sh ok hobo

ok

输入密码:ERROR 1049(42000):未知的数据库“流浪汉”

我可能会完全误解的东西,但我不能把我的手指上可能是什么。

回答

3

您需要删除-p参数后的空格。请参阅mysql man页面。您还需要在命令(从查询中删除它)来指定数据库

mysql -u sqluser -p$pasx -e "$CMD" $db 

或许更加清晰:

mysql --user=sqluser --password=$pasx --execute="$CMD" $db 
+0

随着过剩的空间,命令是:'mysql -u sqluser -p hobo -e“use ...”'。 'hobo'被解释为'mysql'的第一个参数,即。要连接到的数据库。 – RandomSeed

1

试试这个:

mysql -u sqluser --password=${pasx} -e "$CMD" $db