我改变了所有"'"和"`"到了'''有些错误消失但仍然不对 我编辑下面的代码和错误
我的shell脚本的一部分是这样的
#!/bin/bash
echo change $1 database
echo "Input dataBase password:"
read dbPasswd
if [ $1="Aa" ]; then
echo "Input old Aa ip:"
read oldAaip
echo "Input new Aa ip:"
read newAaip
mysql -uroot -p$dbPasswd << EOF
use Test_db
update "Test_controller" set node_ip = "$newAaip" where node_ip="$oldAaip";
update "Test_cluster" set admin_ip = "$newAaip" where admin_ip="$oldAaip";
update "Test_physical_volume" set connect_path ="$newAaip" where connect_path ="$oldAaip";
commit;
EOF
我在./updateDB.sh Aa
change Aa database
Input dataBase password:
123456
Input old Aa ip:
1.1.1.1
Input new Aa ip:
1.1.1.2
ERROR 1064 (42000) at line 2: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"Test_controller" set node_ip = "1.1.1.2" where node_ip="1.1.1.1"' at line 1
有人会告诉我为什么会这样吗?
答案 0 :(得分:1)
Backtick不是引号,评估反引号之间的文本。所以bash试图在你的全局命令之前评估反引号之间的命令。
对于您的表名,您不需要转义表名,因为它不是保留名称。但如果你需要它,你还必须使用\
caracter来逃避反引号。