来自bash脚本的sqlite查询,单引号中断语法

时间:2014-07-19 21:44:38

标签: bash sqlite variables

我在bash脚本中有以下内容:

sqlite3 database.db "INSERT INTO tbl (col1,col2) VALUES ('\"$line\"','\"$stdout\"');"

,其中$line变量不会造成任何麻烦,但我的$stdout 变量从whois $line输出,因此它包含许多字符,其中之一 被'打破sqlite3语法。

是否有某种方法可以引用 - 转义该变量,以便它可以很好地传递 在这个查询?

修改

抱歉,我在这里找到了我的解决方案,https://stackoverflow.com/a/14340973/2434479

我应该删除这个问题吗?

1 个答案:

答案 0 :(得分:2)

简单引用 '的标准SQL转义序列是双引号 ''

使用bash模式替换,您可以执行必要的替换:

sh$ DSQ="''"
sh$ stdout="I'm in a big'trouble"
sh$ echo "${stdout//\'/$DSQ}"
I''m in a big''trouble

在您的具体案例中:

DSQ="''"
sqlite3 database.db \
    "INSERT INTO tbl (col1,col2) VALUES ('$line','${stdout//\'/$DSQ}');"