2010-11-11 14 views
11

Ho creato un database - tasks.db - con SQLite. Questo database ha una tabella - todo - con i seguenti campi: id (PK), la data (ora con trigger), il progetto, dueDate, stato, descrizioneCome automatizzare un processo INSERT INTO in SQLite?

Per inserire una nuova riga nel SQLite dalla riga di comando, Devo scrivere:

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

che è un processo piuttosto lungo e soggetto a errori. Così ho deciso di "automatizzare" con uno script di shell (BSQ), che viene eseguito come segue:

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

... e non succede nulla quando corro: sh BSQ. La sequenza appare quindi mi riporta al prompt. Dove ho sbagliato o cosa ho omesso (ENTER? Ma come faccio?)?

Grazie per il vostro aiuto

THG

+0

Che cosa si aspetta? Chiami "echo sqlite ..." non invoca sqlite. Si prega di formattare correttamente la sorgente. Usa le icone sopra la textarea. – khachik

+0

L'ultimo eco è corretto? O stai eseguendo sqlite3 direttamente? Funziona bene qui; riecheggiando il comando alla fine. – falstro

+0

Inoltre: In sh '$ Proj' non viene considerato come una variabile. Usa '" $ Proj "' – khachik

risposta

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

ha funzionato perfettamente, ovviamente. Grazie mille (e questa volta, non ho dimenticato di accettare la risposta ...) – ThG

+0

@ThG: Puoi anche farli andare oltre. –

+5

nota: questo non si occupa della fuga –

Problemi correlati