Откройте консоль SQLite и выполните SQL без выхода - PullRequest
0 голосов
/ 20 января 2020

Для удобства я хочу создать пакетный файл, который открывает терминал, запускает SQLite и подключается к базе данных, присоединяет какую-то другую базу данных и оставляет терминал SQLite открытым.

Например:

#!/bin/bash

sqlite3 -interactive "/db.sqlite" <<EOS
  ATTACH DATABASE "/sb2.sqlite" AS db2;
EOS

Проблема в том, что sqlite3 завершает работу сразу после выполнения команды.

Есть идеи, как оставить ее открытой?

1 Ответ

1 голос
/ 21 января 2020

Проблема в том, что sqlite3 автоматически завершается, когда получает EOF от стандартного ввода, что он делает в конце heredo c. К счастью, одним из параметров командной строки, который он принимает, является -cmd SQL, который оценивается перед началом чтения из стандартного ввода. Таким образом, ваш скрипт может выглядеть примерно так:

#!/bin/sh
sqlite3 -interactive -cmd "ATTACH '/sb2.sqlite' AS db2" /db.sqlite

В качестве альтернативы, если вы всегда хотите запускать его каждый раз при запуске клиента sqlite3, вы можете поместить его в файл ~/.sqliterc или использовать -init /path/to/other/file.

...