FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: DasB am 12 Januar 2017, 22:05:16

Titel: Escapen von Anführungszeichen?
Beitrag von: DasB am 12 Januar 2017, 22:05:16
Hallo zusammen,

kurze Frage die einer der alten Hasen sicher fix beantworten kann:

Ich würde gerne folgendes abbilden:

Edit: (Danke kumue für den Hinweis!)
define test notify { system("echo -n -e "3;1" | nc -u -w1 -p 18666 192.168.0.80 18566")}

define test notify suchmuster { system("echo -n -e "3;1" | nc -u -w1 -p 18666 192.168.0.80 18566")}

Offensichtlich kann das nicht funktionieren, aufgrund der Anführungszeichen.

Versucht habe ich:

define test notify { system("echo -n -e \"3;1\" | nc -u -w1 -p 18666 192.168.0.80 18566")}
define test notify { system("echo -n -e '3;1' | nc -u -w1 -p 18666 192.168.0.80 18566")}
define test notify { system('echo -n -e "3;1" | nc -u -w1 -p 18666 192.168.0.80 18566')}


Leider ohne Erfolg.

Wie ist hier vorzugehen?

Grüße,
Ben
Titel: Antw:Escapen von Anführungszeichen?
Beitrag von: kumue am 12 Januar 2017, 22:26:15
ich vermisse etwas und zwar dein Suchmuster...
commandref:
Zitatdefine <name> notify <Suchmuster> <Anweisung>
{ system("echo -n -e "3;1" | nc -u -w1 -p 18666 192.168.0.80 18566")}
ist doch sicher deine Anweisung..
Titel: Antw:Escapen von Anführungszeichen?
Beitrag von: dev0 am 13 Januar 2017, 06:24:42
Zitat von: DasB am 12 Januar 2017, 22:05:16
Offensichtlich kann das nicht funktionieren, aufgrund der Anführungszeichen.

Neben der Anmerkung von kumue könnte man noch einfache und doppelte Anführungszeichen verwenden um die inneren " nicht escapen zu müssen:

system("echo -n -e '3;1' ...")
Titel: Antw:Escapen von Anführungszeichen?
Beitrag von: DasB am 13 Januar 2017, 11:54:04
Zitat von: kumue am 12 Januar 2017, 22:26:15
ich vermisse etwas und zwar dein Suchmuster...
commandref:{ system("echo -n -e "3;1" | nc -u -w1 -p 18666 192.168.0.80 18566")}
ist doch sicher deine Anweisung..

Du hast natürlich recht. Ich hatte die Anweisung noch in der Zwischenablage und habe den Rest auf die Schnelle aus dem Kopf runtergetackert  ::)

Zitat von: dev0 am 13 Januar 2017, 06:24:42
Neben der Anmerkung von kumue könnte man noch einfache und doppelte Anführungszeichen verwenden um die inneren " nicht escapen zu müssen:

system("echo -n -e '3;1' ...")


Das hatte ich versucht (siehe mein erster Post), hat leider nicht funktioniert.
Titel: Antw:Escapen von Anführungszeichen?
Beitrag von: DasB am 13 Januar 2017, 13:00:23
Hallo,

Ich konnte das Problem selbst lösen. Schon fast peinlich aber wie so oft sieht man oft den Wald vor lauter Bäumen nicht mehr.  ::)

Das eigentliche Problem waren nicht die Anführungszeichen oder Hochkommas, es war das Semikolon. Nach einer kurzen Recherche und lesen der Commandref stellte sich heraus, dass ich zwei Semikolons benötige, um den gewünschten Output zu bekommen.

Aus

{ system("echo -n '3;1' | nc -u -w1 -p 18666 192.168.0.80 18566") }

wird

{ system("echo -n '3;;1' | nc -u -w1 -p 18666 192.168.0.80 18566") }


Viele Grüße,
Ben
Titel: Antw:Escapen von Anführungszeichen?
Beitrag von: Ellert am 13 Januar 2017, 23:47:30
Man benötigt die Klammern und und den Perl-Systemaufruf nicht, es geht auch so:

"echo -n '3;1' | nc -u -w1 -p 18666 192.168.0.80 18566" ggf. mit ;;

siehe https://fhem.de/commandref_DE.html#command