こんな感じ。
#!/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