我的 Bash 腳本使用 SQLite 來存盤資料。我正在比較表中的 id (列jid)tester,其中 id 位于表中test2:
sqlite3 jail.db "SELECT jid FROM tester" | while read jid; do
if sqlite3 jail.db "select exists(select 1 from test2 where jid=$jid limit 1)"; then
echo "i found it"
else
echo "i did not find it"
fi
done
通過 id 的查詢回傳 0 或 1,但我的 Bash 腳本執行 If/then/else 的 1 部分,不管:
0
i found it
0
i found it
0
i found it
0
i found it
1
i found it
1
i found it
1
i found it
uj5u.com熱心網友回復:
我猜你正在尋找一個左外連接,像這樣
for r in $(sqlite3 jail.db 'select case when test2.jid != "" then 1 else 0 end from tester left outer join test2 on tester.jid = test2.jid;'); do
if [[ "$r" == 1 ]]; then
echo "i found it"
else
echo "i did not find it"
fi
done
注意使用$()來獲取命令的輸出而不是它的退出值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/522994.html
標籤:重击sqlite壳
