You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中移除SQLite3命令结果里的PRAGMA busy_timeout值

解决SQLite添加busy_timeout后返回多余值的问题

问题核心是:在同一条SQL语句里执行pragma busy_timeout=20000时,SQLite会返回该pragma的当前设置值(即20000),导致和后续查询结果混在一起。以下是几种可行的修改方案:

方案1:使用命令行参数设置超时(推荐)

直接通过sqlite3的命令行参数-busy-timeout设置超时时间,这样不会输出pragma的返回值,仅保留查询结果:

result=$(sqlite3 -busy-timeout 20000 sample.db "SELECT count(*) FROM table WHERE value='sample';")
echo $result

方案2:过滤输出结果

如果必须在SQL语句中写pragma,可以通过tail命令只保留最后一行的查询结果:

result=$(sqlite3 sample.db "pragma busy_timeout=20000; SELECT count(*) FROM table WHERE value='sample';" | tail -n1)
echo $result

方案3:使用Here-Doc写法(更清晰)

用Here-Doc分隔多条SQL语句,再过滤输出:

result=$(sqlite3 sample.db <<EOF
pragma busy_timeout=20000;
SELECT count(*) FROM table WHERE value='sample';
EOF
| tail -n1)
echo $result

内容的提问来源于stack exchange,提问作者Amin SZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:12:09