我编写了一个 Bash 脚本来将值插入SQLite数据库。命令如下:
sqlite3 ${db_name} "insert into ${table_name} (${column1},${column2}) values ('$f1','$f2');"
Run Code Online (Sandbox Code Playgroud)
此命令可以正常工作,直到f1变量包含单引号:
# E.g., f1="I'm just kidding"
# The command reported an error:
Error: near "m": syntax error
Run Code Online (Sandbox Code Playgroud)
我们如何转义变量内的单引号?
要转义 SQL 的单引号,请将其加倍 ( https://www.sqlite.org/faq.html#q14 ):
$ f1="I'm just kidding"
$ echo "${f1//\'/''}"
I''m just kidding
$ f2="no single quotes"
$ echo "${f2//\'/''}"
no single quotes
Run Code Online (Sandbox Code Playgroud)
所以
sqlite3 ${db_name} "insert into ${table_name} (${column1},${column2}) values ('${f1//\'/''}','${f2//\'/''}');"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12369 次 |
| 最近记录: |