0

スペースのある変数をsqliteに挿入するには?

私はこの行を持っています:

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

「new」と「ny」だけが挿入されました。

編集1:

これを使用して値を出力しますが、取得できるのは new -> 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

出力をキャプチャし、改行だけではなく、デフォルトで任意の空白で分割します。シェル変数を変更することで目的を達成できますIFSが、これは面倒な場合があります。

while read代わりにループを使用できます

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

これは改行境界で読み取られ、期待どおりに機能します。

于 2013-02-26T11:18:27.253 に答える