2010-11-11 11 views
11

Stworzyłem bazę danych - tasks.db - z SQLite. Ta baza danych zawiera jeden stołowy - todo - z następujących dziedzin: id (PK), datę (obecnie ze spustem), projektem DUEDATE, status, opisJak zautomatyzować proces INSERT INTO w SQLite?

aby wprowadzić nowy wiersz w SQLite z wiersza poleceń, Muszę napisać:

sqlite3 tasks.db "insert into todo (project,duedate,status,description) values (2010-11_18,'Home','Urgent','Call the plumber');" 

co jest procesem dość długim i podatnym na błędy. Więc postanowiłem "automatyzacja" to skrypt powłoki (BSQ), która przebiega w następujący sposób:

#!/bin/sh 
echo "What project ?" 
read Proj 
echo "For when ?" 
read Due 
echo "What status ?" 
read Stat 
echo "What to do ?" 
read Descr 

echo sqlite3 tasks.db "insert into todo (project,duedate,status,description) values ('$Proj',$Due,'$Stat','$Descr');" 

... i nic się nie dzieje, gdy biegnę: SH BSQ. Sekwencja pojawia się, a następnie przywraca mnie do zachęty. Gdzie popełniłem błąd lub co pominięto (ENTER? Ale jak to zrobić?)?

Dzięki za pomoc

THG

+0

Czego można się spodziewać? Wywołujesz 'echo sqlite ...' nie wywoła ona sqlite. Proszę poprawnie sformatować źródło. Użyj ikon nad polem tekstowym. – khachik

+0

Czy ostatnie echo jest prawidłowe? Czy wykonujesz bezpośrednio sqlite3? Działa tutaj dobrze; powtórzenie polecenia na końcu. – falstro

+0

Również: In sh '$ Proj "nie jest traktowane jako zmienna. Użyj '" $ Proj "' – khachik

Odpowiedz

23
#!/bin/sh 
echo "What project ?" 
read Proj 
echo "For when ?" 
read Due 
echo "What status ?" 
read Stat 
echo "What to do ?" 
read Descr 

echo "im gonna run" sqlite3 tasks.db "insert into todo \ 
    (project,duedate,status,description) \ 
    values (\"$Proj\",$Due,\"$Stat\",\"$Descr\");" 
sqlite3 tasks.db "insert into todo (project,duedate,status,description) \ 
     values (\"$Proj\",$Due,\"$Stat\",\"$Descr\");" 
+0

to działało idealnie, oczywiście. Wielkie dzięki (i tym razem, nie zapomniałem zaakceptować odpowiedzi ...) – ThG

+0

@ThG: Możesz ją również przegłosować. –

+5

uwaga: to nie zajmuje się ucieczką –

Powiązane problemy