我在shell脚本中有一个包含'&'的表变量。当我尝试更新Shell脚本中的表时,查询失败。
我尝试了几种选择以单引号,双引号和反引号'`'来包含表名(反引号将其中的语句视为shell的命令)
还尝试设置以下选项: 设置在 设置转义
#!/bin/bash
Table='City_&_District'
mysql --user=$DB_USER --password=$DB_PASSWD $DB_NAME << EOF
update $Table set Actual='$Actual', Normal='$Normal', Dep_Per='$Dep', Cat='$Cat' where Date='$Date';
EOF
如果我将表名输入为:“ City”,则查询成功 如果我将表名称输入为:'City _&_ District',则查询失败
第2行的错误1064(42000):您的SQL语法有错误; 检查与您的MySQL服务器版本相对应的手册 在'&_District set Actual ='0.4',Normal ='0.1'附近使用正确的语法, Dep_Per ='340%',Cat ='LE',其中Date =''在第1行
答案 0 :(得分:2)
尝试将反斜杠与反斜杠一起使用,因为反斜杠在shell中被认为是命令替换,并且它们都用双引号引起来。
您需要避开反引号
“ \`City _&_ District \`”
答案 1 :(得分:0)
使用时可以在表名周围使用`(而不是'或“)
答案 2 :(得分:0)
在表变量中反引号起作用之前添加反斜杠