#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语法错误
希望我正确地传递了命令行参数。但不确定,为什么会弹出这个错误?

最佳答案

如果使用查询,则表示:

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
#                                         ^  ^

关于mysql - Bash:命令行参数问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36742016/

10-14 16:26