こんな感じ。
#!/bin/sh
sqI=fifoI.$$ sqO=fifoO.$$
tail -f $sqI | sqlite3 database.sq3 &
pid=$!
trap "kill $pid; rm -f $sqI $sqO" EXIT INT QUIT STOP
query() {
echo ".once $sqO
$@" > $sqI
cat $sqO
}
while read sql; do
result=`query "$sql"`
echo RESULT: "$result"
done
シェルスクリプト内で頻繁にsqlite3プロセスを起動するオーバーヘッドが 気になる場合はどうぞ。
.once がないバージョンの場合は query() を以下のように変更。
echo ".output $sqO $@ .output stdout" > $sqI cat $sqO