避免消息" - - 从.sqliterc加载资源"

ThG*_*ThG 5 sqlite

小问题,但令人恼火:有没有办法避免每次进行查询时出现以下消息:

- 从/Users/ThG/.sqliterc加载资源

lev*_*ied 7

作为一个愚蠢的解决方法,这有效:

<. sqlite your_sqlite.db 'select * from your_table'
Run Code Online (Sandbox Code Playgroud)

这是因为当前的代码是这样做的:

 if( stdin_is_interactive ){
   utf8_printf(stderr,"-- Loading resources from %s\n",sqliterc);
 }
Run Code Online (Sandbox Code Playgroud)

由于这段代码,强制标准输入重定向会阻止这一点

stdin_is_interactive = isatty(0);
Run Code Online (Sandbox Code Playgroud)

这也有效:

sqlite -batch your_sqlite.db 'select * from your_table'
Run Code Online (Sandbox Code Playgroud)

由于这段代码

}else if( strcmp(z,"-batch")==0 ){
  /* Need to check for batch mode here to so we can avoid printing
  ** informational messages (like from process_sqliterc) before
  ** we do the actual processing of arguments later in a second pass.
  */
  stdin_is_interactive = 0;
}
Run Code Online (Sandbox Code Playgroud)

但它更长,所以有点违背目的。

  • 与某些*其他*答案不同,这不仅解决了问题,而且尊重了这样一个事实:我们中的一些人确实喜欢有一个 `.sqliterc` 是有原因的,而不是假设“无论如何都在 shell 中工作” (2认同)

小智 5

我知道这个问题现在已经过时了,但只是删除'/Users/ThG/.sqliterc'应该可以解决问题.'.sqliterc'是sqlite交互式命令行前端的配置文件.如果你不花很多时间在那里,你将不会错过这个文件.


小智 2

该资源消息出现在 stderr 上,后面跟着一个空行,因此您可以使用类似这样的内容删除它(包含在自己的脚本文件中):

#!/bin/bash
sqlite3 -init /your/init/file /your/sqlite3/file.db "
    your
    SQL
    cmds
" 2>/dev/null | sed -e1d
Run Code Online (Sandbox Code Playgroud)