sqlite3 daemonもどき

こんな感じ。

#!/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