SQLite, bash-скрипт и оператор сцепления - PullRequest
1 голос
/ 16 декабря 2010

У меня есть база данных SQLite, stuff.db (с примечаниями TABLE (id INTEGER PRIMARY KEY, timeStamp DATE, note TEXT);). Отметка времени запускается автоматически.

Я хочу заполнить его быстрым и грязным способом из командной строки.

Итак, я написал скрипт с именем bashscript1, который выглядит так:

sqlite3 script.db 'insert into notes (note) values ("Stuff happens.");'

Но я хотел, чтобы и это предложение было стандартным, и, если необходимо, более точным: я хотел бы добавить переменную информацию, например: «Фу входит в комнату». или «Бар звонит». Идея состоит в том, чтобы соединить эти строки и получить: «Все происходит. Фу входит в комнату». или «Все происходит. Бар звонит».

Итак, я переписал скрипт:

echo "Do you want to add somme text ?"
read Str1
sqlite3 script.db 'insert into notes (note) values ("Stuff happens."||\"$Str1\");'

И, конечно, я получил сообщение об ошибке. Как мне поступить?

Заранее спасибо

THG

Ответы [ 2 ]

2 голосов
/ 16 декабря 2010

Попробуйте:

sqlite3 script.db "insert into notes (note) values ('Stuff happens.$Str1');"

Обратите внимание, что это сломается, если ваш $Str1 содержит одну кавычку.

1 голос
/ 16 декабря 2010

Переменные оболочки не будут расширяться, если заключены в одинарные кавычки, как у вас. Возможно, вы хотите:

sqlite3 script.db "insert into notes (note) values (\"Stuff happens.\"||\"$Str1\");"

P.S. Я предполагаю, что || является частью синтаксиса sqlite3, потому что это, конечно, не bash, по крайней мере, в этом контексте. Если это не так, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...