Bash
如何在一個襯裡 shell 命令中將多個命令傳遞給 sqlite3
我正在嘗試將剪貼板內容保存到 sqlite 數據庫中。創建數據庫和表。
我不希望它
journal
在每次剪貼板更改時都創建文件,所以我嘗試傳遞PRAGMA journal_mode = OFF;
標誌。但是在單行命令中傳遞這些命令很棘手,因為sqlite
只接受兩個命令,例如sqlite3 clipboard_archive.db "insert into cb (cb_context) values ('clipboard');"
有用。我尋找
Q&A
站點,一些建議以下列方式回顯命令。echo "PRAGMA journal_mode = OFF;" | sqlite3 clipboard_archive.db "insert into cb (cb_context) values ('clipboard');"
但是雖然它在命令提示符下工作,但
PRAGMA journal_mode = OFF;
不會以這種方式生效。sqlite3
我的一個襯裡腳本有什麼問題?
如果您不想要日誌,不確定為什麼要使用 SQLite(如果速度是一個問題,您是否考慮過更快的 WAL 模式?)但是您可以給出多個用分號分隔的命令:
sqlite3 clipboard_archive.db "PRAGMA journal_mode = OFF; insert into cb (cb_context) values ('clipboard');"
derobert的答案似乎不適用於點命令,但您可以使用
-cmd
:sqlite3 tolls.sql3 -cmd ".mode csv" ".import tolls.csv tolls"
它接受多個
-cmd
命令並在最終 arg 之前按順序執行它們。