我有一个包含多个
.sql
文件的文件夹,每个文件都创建自己的数据库。我正在尝试下面的 bash 脚本循环遍历每个文件并使用 sqlite3 初始化数据库。
for filepath in $(find ~/sql/ -name '*.sql'); do
sqlite3 "${file}.db" -init "$filepath"
done
我的问题是我必须在终端中手动输入
.quit
才能在bash循环继续之前退出sqlite3。
我尝试添加
.quit
但终端无法识别 sqlite 命令。我是否需要在 .sql
文件中添加退出命令才能从 bash 终端或其他终端退出 sqlite?
编辑:从评论中,我让脚本自动运行
sqlite3 "${file}.db" < "$filepath"
。
如果您不能/不想通过标准输入传递命令,解决方法是将
.quit
(例如,.quoot
)拼错为 -init
文件中的最后一个语句,然后传递 命令行上的-bail
选项。
sqlite3
将执行 -init
文件中的命令,直到到达产生错误的命令(希望是故意拼写错误的命令),然后以非零状态终止。然后 bash 脚本可以继续。