Создание сценариев команд sqlite с точкой в ​​git bash: проблема с передачей команд в sqlite через heredo c - ошибка «stdin не является tty» - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь написать сценарий bash для нескольких команд sqlite dot. Я использую git bash на windows ОС.

Я установил псевдоним для sqlite3 в .bashrc alias sqlite3="winpty /c/Users/marcello/sqlite-tools/sqlite3.exe"

... но он не распознается когда я запускаю свой script.sh. Я получаю вывод «команда не найдена». Итак, я определил его в самом скрипте.

#!/bin/bash
sqlite3="winpty /c/Users/marcello/sqlite-tools/sqlite3.exe"
$sqlite3 -batch <<EOF
.open splitwiseDB.db
#command 2, etc.
EOF

Когда я запускаю приведенный выше код без heredo c <<, он работает должным образом. <a href="https://i.stack.imgur.com/Cu2CP.png" rel="nofollow noreferrer"> ожидаемый ответ sqlite3

Однако, когда я добавляю heredo c обратно, я получаю сообщение об ошибке: «stdin is not a tty» сообщение об ошибке stdin

Я думаю, это может быть связано с тем, как я определяю команду sqlite3, но я просто не уверен, поэтому прошу о помощи. Я собрал это решение из этих источников, и во всем этом коде команда sqlite3, казалось, запускалась легко, в отличие от моего кода, где я должен был ее определить.

https://dba.stackexchange.com/questions/175986/scripting-sqlite-with-dot-commands

Как автоматизировать процесс с помощью инструмента командной строки sqlite3.exe?

https://unix.stackexchange.com/questions/414443/how-to-write-sqlite-commands-in-a-shell-script

Я также попытался связать текстовый файл с командой sqlite3 в командной строке, а не в сценарии bash, но я также получил там «stdin is not a tty». Я попытался устранить эту ошибку, но кажется, что она появляется так часто, что мои поиски не помогли.

Если это полезно, вот результат команды ls:

marcello@Marcello MINGW64 ~/sqlite-tools
$ ls
bulkImportTest         import_splitwsie_CSV.txt  sqlite3_analyzer.exe*
Codecademy/            splitwiseDB.db            SQLiteStudio/
commands.sql           SQL_END                   SQLiteStudio-3.2.1.zip
commands.txt           sqldiff.exe*
createMasterTable.sql  sqlite3.exe*

Примечание. Конечная цель - использовать команды .import. Я думаю, что смогу сделать все это с помощью функций INSERT, но меня интересует сценарий bash. Спасибо!

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