将插值的sqlite3查询分配给Bash中的变量的正确引用是什么?

时间:2013-03-09 18:37:49

标签: bash sqlite shell quoting

我正在尝试将以下输出分配给变量

sqlite3 /home/user/db_fake_book_index "select id, page from fb2 where bookcode='$bookcode' and page=$page

如果我按照

运行报价
echo "sqlite3 /home/user/db_fake_book_index \"select id, page from fb2 where bookcode='$bookcode' and page=$page\""

我得到了

sqlite3 /home/user/db_fake_book_index "select id, page from fb2 where bookcode='557S' and page=10"

如果我将它复制到控制台它工作正常,但如果我把它包装在我的脚本中的$()它不起作用,sqlite认为有太多的变量,似乎我的双引号被删除。

$(printf "sqlite3 /home/user/db_fake_book_index \"select id, page from fb2 where bookcode='$bookcode' and page=$page\"")

这给出了相同的效果

2 个答案:

答案 0 :(得分:3)

result=$( sqlite3 /home/user/db_fake_book_index "select id, page from fb2 where bookcode='$bookcode' and page=$page" )

query="select id, page from fb2 where bookcode='$bookcode' and page=$page"
result=$( sqlite3 /home/user/db_fake_book_index "$query" )

答案 1 :(得分:0)

这将保存为变量v

set "select id, page from fb2 where bookcode='$bookcode' and page=$page"
read v < <(sqlite3 /home/user/db_fake_book_index "$1")