Hallo zusammen,
ich möchte in einem DOIF mit qx ein Shellscript aufrufen (welches funktioniert, wenn man es von anderen Stellen aus aufruft).
Ich habe Probleme mit der Perl-Klammerung, trotz Ottos guter Beschreibung.
Auf der Shell würde ich es so aufrufen (2 Parameter):
/opt/sendmsg.sh "Hier kommt der Betreff" "Hier kommt der Body"
Der FHEM-Codeschnipsel sieht z. Zt. so aus:
{my $msg = fhem("get TYPE=monitoring default");
if($msg){
qx "/opt/imatuve/sendmsg.sh \"$msg\" blah";
Der qx-Aufruf funktioniert aber nicht so ganz, da in $msg mehrere Wörter stehen, die dann als mehrere Parameter aufgefasst werden.
Deshalb soll der Inhalt von $msg dem Shellscript mit einschließenden Anführungszeichen (") übergeben werden.
Also so in der Art (was aber auch falsch ist):
qx (/opt/sendmsg.sh "$msg" "Hier kommt der Body");
Ich habe fast alle Kombinationen durch und komme nicht weiter, kann jemand helfen?
Vielen Dank!
Hab's gefunden, im String $msg waren leider noch selber versteckt 2 Hochkommazeichen.
Demnach ist das hier richtig:
qx(/opt/sendmsg.sh "Achtung $msg " " Hier Body");
Danke für's Lesen!