我想传递$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>
答案 0 :(得分:1)
您可以尝试:
datetime('now', '$period', 'localtime')
datetime('now $period', 'localtime')
或者只是
datetime('$period', 'localtime')
有了这些,$period
仍会扩展,因为它仍然是""
的一部分。这些单引号被视为字面值,不会影响它。