sqlite3命令行返回代码不一致



我在互联网上找不到sqlite3命令行程序返回代码的文档。

尝试以编程方式使用它,我发现一些错误会打印到屏幕上,但仍然返回零。例如,任何返回错误消息"错误:不完整的SQL"的操作都不会导致命令行应用程序返回非零:

$ echo 'foo' > /tmp/foo.sql
$ sqlite3 /tmp/foo.db < /tmp/foo.sql
Error: incomplete SQL: foo
$ echo $?
0

这是个虫子吗?我会这么认为,特别是考虑到这条等价的线:

$ sqlite3 /tmp/foo.db "foo"
-- Loading resources from /home/yomomma/.sqliterc
Error: near "foo": syntax error
$ echo $?
1

有人能给我指一下sqlite3的预期返回值的文档吗?

(问题不在于我的.sqliterc,全文转载于此:

.mode column
.headers on
.nullvalue '<NULL!>'

)

编辑:

$ sqlite3 --version
-- Loading resources from /home/yomomma/.sqliterc
3.7.13 2012-06-11 02:05:22 f5b5a13f7394dc143aa136f1d4faba6839eaa6dc

这可能是SQLite(v3.8.6)中的一个错误

if( nSql ){
  if( !_all_whitespace(zSql) ){
    fprintf(stderr, "Error: incomplete SQL: %sn", zSql);
  }
  free(zSql);
}
free(zLine);
return errCnt>0;

我认为fprintf语句之后应该有一个errCnt++;。在检测到另一种类型的错误后,此增量操作在代码的早期使用。我将向作者报告此事。

最新更新