Shell Script Fehler beim ausführen einer Variable

nils2410

Newbie
Dabei seit
Dez. 2006
Beiträge
6
Hallo zusammen,

ich habe ein Problem mit dem folgendem Script

Code:
#!/bin/sh
while true
do

        Now=$(date +"%Y-%m-%d %H:%M:%S")

        echo "Warte auf Daten"
        read Line </dev/ttyACM0
        echo Line:${Line}
        ${Line}
        echo "Daten zum Server gesendet"
done
auf ttyACM0 kommt z.B. folgendes an:
Code:
sqlite3 -batch /opt/www/db/db.sqlite "INSERT INTO nodes (date,sensor,temperature,humidity,photo,moisture,volt) VALUES ('$Now',2,33,44,226,421,360)";
Gebe ich den Befehl manuell auf der Shell, funktioniert alles.

Die Ausgabe des Scripts ist folgende:

Code:
Warte auf Daten
Line:sqlite3 -batch /opt/www/db/db.sqlite "INSERT INTO nodes (date,sensor,temperature,humidity,photo,moisture,volt) VALUES ('$Now',2,33,44,226,421,360)";
sqlite3: Error: too many options: "INTO"
Use -help for a list of options.
Daten zum Server gesendet
Ich komme nicht drauf wo das Problem liegt, hat jemand eine Idee?

Danke!
 

bieneneber

Cadet 4th Year
Dabei seit
Feb. 2007
Beiträge
127
Laut hier schon dies versucht?
Code:
sqlite3 -batch /opt/www/db/db.sqlite "INSERT INTO nodes VALUES ('$Now',2,33,44,226,421,360)";
Oder kannst du den SQLite String nicht editieren?
 

nils2410

Newbie
Ersteller dieses Themas
Dabei seit
Dez. 2006
Beiträge
6
Der String ist editierbar, der wird von einem Arduino ausgegeben, dass Problem konnte ich aber leider mit der verkürzten Anweisung nicht lösen.

Ich bekomme den selben Fehler, sonst noch Ideen :)
 

ebast

Cadet 4th Year
Dabei seit
Juni 2013
Beiträge
64
Also was ich mal spontan vermute ist, dass die Zeile 10 aus deinem Skript nicht das mit den Parametern macht, was du gerne hättest. Für gewöhnlich wird ja alles, was innerhalb von "-Zeichen ist, zu einem Parameter. Das muss aber nicht so sein, wenn man den ganzen Befehl in einer Variablen hat. Folglich kann es passieren, dass du hier als Parameter für sqlite3 nicht
Code:
-batch
/opt/www/db/db.sqlite
"INSERT INTO nodes (date,sensor,temperature,....."
bekommst sondern eben:
Code:
-batch
/opt/www/db/db.sqlite
"INSERT
INTO
nodes
(date,sensor,temperature,....."
Ich leg dir mal die Benutzung von
Code:
eval "${Line}"
ans Herz. Zum debuggen hilft ein
Code:
set -vx
direkt am Anfang des Skriptes.

Keine Garantie für Erfolg, hab das nicht ausprobiert oder ähnliches.
 

nils2410

Newbie
Ersteller dieses Themas
Dabei seit
Dez. 2006
Beiträge
6
Ich danke euch! Der letzte Tipp hat den gewünschten Erfolg gebracht!

Hab ewig versucht den Fehler zu finden...
 
Top