加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何通过bash shell转义SQLite中的字符?

发布时间:2020-12-16 01:26:04 所属栏目:安全 来源:网络整理
导读:我试图使用bash从命令行向SQLite发送查询.我需要转义单引号和双引号,并转义它们以便bash不会误解它们.这是一个典型的查询: select * from contacts where source = "Nancy's notes"; 如何从命令行发送此查询?基本语法是这样的: sqlite3.bin contacts.db '
我试图使用bash从命令行向SQLite发送查询.我需要转义单引号和双引号,并转义它们以便bash不会误解它们.这是一个典型的查询:
select * from contacts where source = "Nancy's notes";

如何从命令行发送此查询?基本语法是这样的:

sqlite3.bin contacts.db 'select * from contacts where source = "Nancy's notes"'

但在这种情况下,shell会误解单引号或双引号.我尝试使用双斜线和三斜线转义,但这不起作用.我迷糊了.有什么建议?

MarkusQ解决方案的问题在于知道哪些字符在双引号内是特殊的 – 它们中有很多字符,包括反向标记,美元开括号,美元变量等.

我建议最好将字符串括在单引号内;那么,字符串中的每个单引号都需要被序列引号,反斜杠,引号,引号替换:

sqlite3.bin contacts.db 'select * from contacts
      where source = "Nancy'''s notes"'

替换中的第一个引号终止当前的单引号字符串;反斜杠引用表示文字单引号,最终引号启动一个新的单引号字符串.此外,这适用于Bourne,Korn,Bash和POSIX shell. (C Shell和派生词有更复杂的规则需要反斜杠来逃避换行,等等.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读