Ich möchte gern per shell ein Reading setzten, das aber viele Leerzeichen enthält. Wie kann ich es in einem Befehl packen, ohne dass es als mehrere "cmd" interpretiert wird?
perl fhem.pl localhost:7072 "setreading dutest testreading $wert"
wo $wert diese mehrere durch Leerzeichen getrennte Wörter enthält, ergibt viele "Unknown command" und nur das erste wird als Reading gesetzt.
Bei mir funktionieren folgende beiden Varianten problemlos:
perl fhem.pl localhost:7072 "setreading dutest testreading wert1 wert2 wert3"
echo "setreading dutest testreading2 wert1 wert2 wert3" |telnet localhost 7072
Beschreibe doch mal etwas genauer, was Du vorhast und wie das shell skript bei Dir aussieht.
Naja. Anscheinend sind nicht die Leerzeichen das Problem, sondern Zeilenumbrüche
wert="wert1
wert2
wert3"
perl fhem.pl localhost:7072 "setreading dutest testreading $wert"
Unknown command wert2, try help.
Unknown command wert3, try help.
pi@raspberrypi:/opt/fhem $ wert="wert1
> wert2
> wert3"
pi@raspberrypi:/opt/fhem $ echo $wert
wert1 wert2 wert3
pi@raspberrypi:/opt/fhem $ perl fhem.pl localhost:7072 "setreading dutest fhem_text $wert"
Unknown command wert2, try help.
Unknown command wert3, try help.
pi@raspberrypi:/opt/fhem $ ^C
pi@raspberrypi:/opt/fhem $
wert="wert4
wert5
wert6"
echo -E setreading dutest testreading $wert | sed 's/\n/ /g' | telnet localhost 7072
Das shell Skript soll die Liste von anstehenden Updates in einem Reading schreiben, wie hier vom User gewünscht: https://forum.fhem.de/index.php/topic,75692.0.html
VORSICHT: nicht machen, da er dann die UPD als Kommandos interpretiert, und startet ein update!
#!/bin/bash
updatesfhem=$(curl -sS http://fhem.de/fhemupdate/controls_fhem.txt| diff - /opt/fhem/FHEM/controls_fhem.txt |grep "> UPD" )
perl fhem.pl localhost:7072 "setreading dutest FHEM $updatesfhem"
Mit deinem Befehl ersetzt Du aber die Zeilenumbrüche durch Leerzeichen. Nicht so schön, aber vielleicht für den User OK. Werde fragen.
Zitat von: amenomade am 23 August 2017, 15:54:00
VORSICHT: nicht machen, da er dann die UPD als Kommandos interpretiert, und startet ein update!
quatsch.
Zitat von: amenomade am 23 August 2017, 15:54:00
Nicht so schön, aber vielleicht für den User OK. Werde fragen.
Kann der nicht selber fragen ???
Quatsch? Probier es dann mal ;) Du bist gewarnt (und hast bestimmt Testinstallationen)
Ich habe mit userReadings und qx(curl...) probiert. Es wird sowieso nicht mit Zeilenumbrüche ins Reading gesetzt. Dann... mal sehen, was der User sagt.