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