将变量从bash传递到sqlite3的where子句

时间:2014-07-26 12:10:26

标签: bash sqlite variables clause

我想传递$period变量,作为sqlite的where子句中的条件:

它将采用以下形式:

-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 " ",因为它明显分崩离析。< / p>

1 个答案:

答案 0 :(得分:1)

您可以尝试:

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

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

或者只是

datetime('$period', 'localtime')

有了这些,$period仍会扩展,因为它仍然是""的一部分。这些单引号被视为字面值,不会影响它。