3

これは今日私の頭を悩ませています。MySQLテーブルに値を設定するbashスクリプトがあります。設定する必要がある値は、末尾に円記号が付いた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

どんな助けでも大歓迎です。

4

2 に答える 2

3

二重引用符で囲まれているため、これらの円記号をすべて2倍にする必要があります。

シェル変数を展開する必要がない場合は、代わりに一重引用符と二重引用符を入れ替えてください。

于 2012-06-26T19:05:18.723 に答える
0
mysql -e 'SELECT "\\\\server\\path\\"'
mysql -e 'update mytable SET myvalue = "\\\\server\\path\\" WHERE ID=10;'
于 2012-06-26T19:08:26.617 に答える