我在bash脚本中有以下内容:
sqlite3 database.db "INSERT INTO tbl (col1,col2) VALUES ('\"$line\"','\"$stdout\"');"
,其中$line
变量不会造成任何麻烦,但我的$stdout
变量从whois $line
输出,因此它包含许多字符,其中之一
被'
打破sqlite3
语法。
是否有某种方法可以引用 - 转义该变量,以便它可以很好地传递 在这个查询?
修改
抱歉,我在这里找到了我的解决方案,https://stackoverflow.com/a/14340973/2434479。
我应该删除这个问题吗?
答案 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}');"