2013-08-07 40 views
1

我試圖在GNU/Linux上使用BASH腳本將一些數據發送到遠程MySQL數據庫,但得到各種錯誤..下面是不工作的行:BASH和MySQL中的Heredocs,變量和單引號

mysql --host=192.168.0.100 --user=petercapaldi --password=mypassword mystartrekcharacterbase << EOF 
INSERT into myfourlegs values ('$PERSON','$THETIME','$THETIME','$THEDATE','$DAYOFWEEK'); 
EOF 

這也太(以防萬一):

mysql --host=192.168.0.100 --user=petercapaldi --password=mypassword mystartrekcharacterbase << EOF 
INSERT into myfourlegs values (\047$PERSON\047,\047$THETIME\047,\047$THETIME\047,\047$THEDATE\047,\047$DAYOFWEEK\047); 
EOF 
+0

您可以嘗試反引號嗎?例如'\\'$ PERSON \\'' – konsolebox

+0

@shellter這只是一個本地IP地址。我不認爲這對他真的很重要。 – konsolebox

+0

這是一個虛假的本地IP,我只是弄髒了角色圓了一點:)現在解決了這個問題,這是我是一個白癡,並從數據庫中丟失了ID ..單引號打印出來,因爲他們應該(即變量打印與他們周圍的報價) –

回答

1

廢料說。我的錯 - 錯過了數據庫中的第一個字段。單引號與heredocs一樣工作。(即'$ VARIABLE'打印'myvariable'就像$ VARIABLE打印myvariable一樣)。

+0

你有沒有想過如果一個變量包含單引號該怎麼辦? –

+0

我沒有沒有:/他們都不應該,因爲它基本上是一個工作人員在機器上運行(在Raspberry Pi上運行 - 在這裏對他們有點生氣)。但是這可能是一個員工的名字可能包含一個..您在那裏會有什麼建議? –

相關問題