使用反斜杠与bash和mysql

时间:2012-06-26 18:54:57

标签: mysql bash escaping backslash

今天令人难以置信。 我有一个bash脚本来设置MySQL表中的值: 我必须设置的值是带有反斜杠的UNC路径:\\ $ HOSTNAME \ path \

在mysql内部查询有效:

update mytable SET myvalue = '\\\\MYSERVER\\path\\' WHERE ID=10;

但是从bash来看,它失败了:

mysql -e "update mytable SET myvalue = '\\\\$HOSTNAME\\path\\' WHERE ID=10;"

MySQL提供语法错误:

ERROR 1064 (42000) at line 1: 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 ''\\MYSERVER\path\' WHERE ID=10' at line 1

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

因为它在双引号内,所以你需要将所有这些反斜杠加倍。

如果您不需要展开任何shell变量,请改为使用单引号和双引号。

答案 1 :(得分:0)

mysql -e 'SELECT "\\\\server\\path\\"'
mysql -e 'update mytable SET myvalue = "\\\\server\\path\\" WHERE ID=10;'