Issue
I wrote a Bash script to insert values to an SQLite database. The command is as follows:
sqlite3 ${db_name} "insert into ${table_name} (${column1},${column2}) values ('$f1','$f2');"
This command works fine until the f1
variable contains a single quote:
# E.g., f1="I'm just kidding"
# The command reported an error:
Error: near "m": syntax error
How can we escape the single quote inside the variable?
Solution
To escape a single quote for SQL, you double it (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
So
sqlite3 ${db_name} "insert into ${table_name} (${column1},${column2}) values ('${f1//\'/''}','${f2//\'/''}');"
Answered By - glenn jackman Answer Checked By - Senaida (WPSolving Volunteer)