Я пытаюсь написать сценарий 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. Спасибо!