2013-02-26 26 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