Bash:命令行参数问题

时间:2016-04-20 11:11:39

标签: mysql bash shell

#usernamecheck.sh 

#!/bin/bsh
DBUSER=user_1
DBPASSWORD=XXXXX
DBSOURCENAME=database_1
DBNAME=database_1
DBNAME1=snapshot_v
DBSERVER=X.X.X.X
DBCONN="-h ${DBSERVER} -u ${DBUSER} --password=${DBPASSWORD}"

echo "select user from device_id where ip='1.1.1.1'|mysql $DBCONN $DBNAME

执行此脚本的输出是:

user
----
JohnDoe

上面的bash脚本给出了用户名IP(1.1.1.1)。我想将IP作为命令行参数传递。我试过了,

echo "select user from device_id where ip=$1|mysql $DBCONN $DBNAME

并执行

$./usernamecheck.sh '1.1.1.1'

我收到错误消息:

  

SQL语法错误

希望我正确传递命令行参数。但不确定,为什么会弹出这个错误?

1 个答案:

答案 0 :(得分:2)

如果您使用查询,请说:

WHERE ip='1.1.1.1'

您目前所说的是:

WHERE ip=$1

被翻译为

WHERE ip=1.1.1.1

所以你错过$1周围的引用以使其有效:

WHERE ip='$1'
#        ^  ^

所有在一起:

echo "select user from device_id where ip='$1' | mysql $DBCONN $DBNAME
#                                         ^  ^