Wert in Text einfügen

Begonnen von satprofi, 11 April 2025, 13:10:24

Vorheriges Thema - Nächstes Thema

TomLee

ZitatDann musst du aber den Pfad+Variable+Skript vorher zusammen bauen. Ob das einfacher ist...

Bist Dir da sicher? Habs net ausprobiert...

Warum sollte das nicht klappen:
system(qq(python2 /usr/local/bin/$cmdAmp.py));
?

TomLee

_pop_

{my $var = 'test3';;system(qq(python3 /opt/fhem/$var.py &))}
funzt!

frober

Zitat von: TomLee am 11 April 2025, 22:15:00_pop_

{my $var = 'test3';;system(qq(python3 /opt/fhem/$var.py &))}
funzt!

Vermutlich ist hier die Variable durch den Punkt abgegrenzt. Ob das Skript so gestartet wird hat du aber nicht getestet!?

Diese Variable gibt es nicht
$cmdAmp, deswegen funktioniert es auch nicht (getestet).
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

#18
$a = 123;
print qq(test $ab.py &)

Ausgabe:
test .py &
$a = 123;
print qq(test $a.b.py &)

Ausgabe:
test 123.b.py &
Der Punkt grenzt die Variable ab.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

TomLee

Stimmt, hast recht.

Dagegen kann man aber was machen und die Variable in geschweiften Klammern angeben:

{my $var = 'te';;system("python3 /opt/fhem/${var}st3.py &")}

satprofi

Zitat von: TomLee am 11 April 2025, 22:46:17Stimmt, hast recht.

Dagegen kann man aber was machen und die Variable in geschweiften Klammern angeben:

{my $var = 'te';;system("python3 /opt/fhem/${var}st3.py &")}

Sooo klapts, Danke !

testweise

{my $var = $cmd;;system("/user/local/bin/${var}Amp.py &")};ergibt sh: 1: /user/local/bin/24Amp.py: not found
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

betateilchen

my $var = "te";
my $cmd = sprintf("python3 /opt/fhem/%sst3.py &",$var);
system $cmd;
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

Schmeckt wie drei Tage altes Popcorn ...

TomLee

Interessant bei der sprintf-Variante ist, das die Platzhalter ohne Abgrenzung verwendet werden können.

betateilchen

#24
Es sind halt tatsächlich Platzhalter, die in ihrer Form schon abgegrenzt sind, und keine Variablennamen.

Und die Variante funktioniert nach diesem Prinzip in vielen mir bekannten Programmiersprachen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!