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

在Bash脚本中使用SQLite:如何正确处理Bash变量?

修复方案

问题出在你使用了带单引号的HERE文档分界符 <<'END_SQL' —— 这种写法会让Bash完全不解析文档内部的变量,所以$FILE被当作了字面文件名,导致输出到了名为$FILE的文件中。

只需要去掉分界符END_SQL两侧的单引号,让Bash能够展开文档内的变量即可:

#!/bin/sh

FILE=$2
sqlite3 $1 <<END_SQL
.headers on
.mode csv
.output $FILE
select * from results;
.output stdout
END_SQL

如果你的文件名包含空格、引号或其他特殊字符,建议给$FILE加上双引号,避免解析错误:

#!/bin/sh

FILE=$2
sqlite3 $1 <<END_SQL
.headers on
.mode csv
.output "$FILE"
select * from results;
.output stdout
END_SQL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 18:04:53