2012-06-26 40 views
3

今天這讓我難以置信。 我有一個bash腳本設置在一個MySQL表中的值: 我要設置的值是UNC路徑以反斜槓:\\ $ HOSTNAME \路徑\使用bash和mysql的反斜槓

在MySQL的查詢工作:

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

但是從慶典,它失敗:

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

因爲它在雙引號內,所以需要將所有反斜槓加倍。

如果您不需要擴展任何shell變量,請改爲使用單引號和雙引號。

+0

這是問題之一;我確實有shell變量:「\\\\ $ HOSTNAME \\ path \\」 –

+0

令人難以置信的是,它需要很多反斜槓來執行此操作:mysql -e「SELECT」\\\\\\\ $ HOSTNAME \\ \\路徑\\\\'」 –

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