0

如何将有空间的变量插入sqlite?

我有这条线:

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

我只插入了“new”和“ny”。

编辑1:

我用它来打印值,但我只得到新的-> ny:

获取我的数据

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
4

1 回答 1

3

很遗憾,

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

默认情况下捕获输出并在任何空白处分割,而不是仅在换行处。您可以通过修改 shell 变量来实现您想要的IFS,但这可能会很麻烦。

您可以改用while read循环

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

这将在换行符边界处读取并按预期工作。

于 2013-02-26T11:18:27.253 回答