2014-07-26 25 views
0

的條款欲傳遞$period變量,如在其中sqlite子句的條件:通可變入其中的sqlite3

這將是一種形式:

-2 hours 
-1 day 

..或類似。

因而擁有了它空白,它通過getopts進入腳本,

./script.sh -p "-2 hours" 

然後被解析並送到功能,在那裏我抓住它$1。 但是,試圖將它組裝成sqlite的語句代替本...的時候,這是行不通的

period="$1" 
sqlite3 -noheader domains.db "select domain,email,update_date,updated_on 
           from tbl_whois where last_run = 1 and updated_on > datetime('now', '...', 'localtime') limit $limit" | \ 

我怎麼能做到這一點,與""所有可能的情況,並'' 但沒有試過成功。

編輯

僅僅是明確的,變細變,我的問題是有關該space問題,因爲我是從SQlite的獲取,設定了太多的參數,可以或error: near " ",因爲它顯然分崩離析。

回答

1

你可以試試:

datetime('now', '$period', 'localtime') 

datetime('now $period', 'localtime') 

或者只是

datetime('$period', 'localtime') 

有了這些,$period仍然會擴大,因爲它仍然是的""的一部分。這些單引號被認爲是文字值,並不會影響它。

+1

我在張貼之前嘗試的第一件事就是您的建議。我將你的答案標記爲解決方案,因爲你讓我思考,然後我意識到我在其他地方犯了錯誤,將'limit = $ 1'改爲'period = $ 1'我失去了我的'$ limit'變量,這個變量也用於查詢,所以該查詢是非法的,即「LIMIT;'。失去了一個小時,因爲這個愚蠢的監督。 – branquito