2012-05-11 3 views
1

Предположим, я хочу сохранить текст различного bash script в моей базе данных с sqlite3.Bash: Как вставить текст со специальным символом в sqlite3?

Если мой сценарий это сделать

VARIABLE=$(cat "bashScript.sh") 
sqlite3 mydb.db "CREATE TABLE data (myBash BLOB)" 
sqlite3 mydb.db "INSERT INTO data VALUES (${VARIABLE})" 

Поскольку сценарий Баш будет иметь все специальные символы, это не будет работать. Как я могу это сделать?

ответ

1

Вам нужно процитировать значение в операторе вставки, и вы хотите, чтобы защитить котировки в самой ценности: непроверенной:

sql_value=$(sed 's/'\''/&&/g' <<< "$VARIABLE") 
sqlite3 mydb.db "insert into data values ('$sql_value')" 
+0

Хорошая идея, использовать '«»' 'Внутри«»' , поэтому работает '$ sql_value'. Единственный характер, который мне нужно беспокоиться, - это '' '? Что вы делаете, это заменить все '' 'на' && '? И что действительно делает '<<<'? Я ищу и не нахожу среднее значение 3 '<' – Rodrigo

+0

В правой части команды 's ///' sed '&' означает «использовать все, что было согласовано с левой стороны» - поэтому я заменяю каждую отдельную цитату двумя одинарными кавычками. '<<<' - это [bash here-string] (http://www.gnu.org/software/bash/manual/bashref.html#Redirections) –

Смежные вопросы