2013-02-26 70 views
0

如何將具有空間的變量插入到sqlite中?bash腳本 - sqlite如何插入變量與空間

我有這樣一行:

sqlite3 testsql.sqlite "INSERT INTO NormalTable (value1,value2) VALUES ('new word','ny ord')"; 

,我只拿到了 「新」 和 「NY」 插入。

編輯1:

我用它來打印出的價值觀,但我得到的只有新 - >紐約:

讓我的數據

LIST=`sqlite3 testsql.sqlite "SELECT * FROM NormalTable WHERE 1"`; 

#For each row 
for ROW in $LIST; do 
    ID=`echo $ROW | awk '{split($0,a,"|"); print a[1]}'` 
    Name=`echo $ROW | awk '{split($0,a,"|"); print a[2]}'` 
    Value=`echo $ROW | awk '{split($0,a,"|"); print a[3]}'` 
    #Printing my data 
    echo -e "\e[4m$Id\e[m) "$Name" -> " $Value; 
done 
+0

這適用於我。 – 2013-02-26 10:17:18

+0

我希望能夠工作。 – 2013-02-26 10:36:43

+0

啊,好的,你如何打印每行的值? – wagashi 2013-02-26 10:59:19

回答

3

不幸的是,

LIST=`sqlite3 testsql.sqlite "SELECT * FROM NormalTable WHERE 1"`; 
for ROW in $LIST; do 
... 
done 

捕獲輸出並在默認情況下在任何空白處分割,而不是僅在換行處。 你可以通過修改IFS shell變量來實現你想要的,但是這可能會很麻煩。

您可以使用while read循環,而不是

sqlite3 testsql.sqlite "SELECT * FROM NormalTable WHERE 1" | while read ROW; do 
... 
done 

如你預期這將在換行符邊界和工作閱讀。

+0

你好,請看看我的編輯和我對我的問題的評論。 – wagashi 2013-02-26 11:33:23

+0

@wagashi請參閱修改答案。 – 2013-02-26 11:47:13

+0

感謝您的好解釋! – wagashi 2013-02-26 11:55:17