2010-11-11 5 views
11

Ich habe eine Datenbank erstellt - tasks.db - mit SQLite. Diese Datenbank eine Tabelle hat - todo - mit den folgenden Feldern: id (pk), Datum (NOW mit Trigger), Projekt, duedate, Status, BeschreibungWie automatisiert man einen INSERT INTO-Prozess in SQLite?

Um eine neue Zeile in SQLite von der Kommandozeile eingeben, Ich muss schreiben:

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

das ist ein ziemlich langer und fehleranfälliger Prozess. So entschied ich mich zu „automatisieren“ es mit einem Shell-Skript (BSQ), die läuft wie folgt ab:

#!/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');" 

... und es passiert nichts, wenn ich laufen: sh BSQ. Die Sequenz erscheint und bringt mich zurück zur Eingabeaufforderung. Wo bin ich falsch gelaufen oder was habe ich weggelassen (ENTER? Aber wie mache ich das?)?

Danke für Ihre Hilfe

thg

+0

Was erwarten Sie? Sie rufen 'echo sqlite ...' auf, es ruft sqlite nicht auf. Bitte formatieren Sie die Quelle richtig. Verwenden Sie die Symbole über dem Textfeld. – khachik

+0

Ist das letzte Echo korrekt? Oder führen Sie sqlite3 direkt aus? Es funktioniert gut hier; echo den Befehl am Ende. – falstro

+0

Auch: In sh '$ Proj' wird nicht als eine Variable behandelt. Verwenden Sie '" $ Proj "' – khachik

Antwort

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

es funktionierte natürlich perfekt. Vielen Dank (und dieses Mal habe ich nicht vergessen, die Antwort zu akzeptieren ...) – ThG

+0

@ThG: Sie können es auch upvote. –

+5

bitte beachten Sie: das kümmert sich nicht darum zu entkommen –

Verwandte Themen