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