FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Otto123 am 08 März 2019, 12:42:50

Titel: "echo willi > Datei.txt" liefert leere Datei
Beitrag von: Otto123 am 08 März 2019, 12:42:50
Ich nehme Bezug auf dieses Post (https://forum.fhem.de/index.php?topic=98268.msg916237#msg916237), wollte aber dort nicht den Thread kapern.

Ich habe das nochmal genauso getestet wie Du - auf verschiedenen Raspbian Systemen, es ist mir aber schon früher immer aufgefallen.
Das Kommando "echo 1 `date --date=tomorrow +%m-%d` Urlaub > FHEM/urlaub.holiday" führt bei mir zwar zu einer Datei /opt/fhem/FHEM/urlaub.holiday, aber die ist leer. Der stdout wird meines Erachtens über ">" nicht  in die Datei gelenkt sondern irgend woanders hin.

Mache ich das Gleiche, aber mit {qx(echo 1 `date --date=tomorrow +%m-%d` Urlaub > FHEM/urlaub.holiday)} funktioniert das wie gewünscht. Auch mit {system(echo 1 `date --date=tomorrow +%m-%d` Urlaub > FHEM/urlaub.holiday)} funktioniert das. Mitschnitt Telnet:
PiB>
PiB> "echo 1 `date --date=tomorrow +%m-%d` Urlaub > FHEM/urlaub.holiday"
PiB> {qx(cat FHEM/urlaub.holiday)}

PiB> {system("echo 1 `date --date=tomorrow +%m-%d` Urlaub > FHEM/urlaub.holiday")}
-1
PiB> {qx(cat FHEM/urlaub.holiday)}
1 03-09 Urlaub

PiB>


Oder nochmal mit Urlaub:
PiB> set urlaub reload
PiB> l urlaub
Internals:
   CFGFN
   FUUID      5c8244cb-f33f-27f7-37cb-88455a02b0610a86
   HOLIDAYFILE ./FHEM/urlaub.holiday
   NAME       urlaub
   NR         164
   READONLY   0
   STATE      none
   TRIGGERTIME 1552086002.01074
   TYPE       holiday
   READINGS:
     2019-03-08 12:40:15   state           none
     2019-03-08 12:40:15   tomorrow        Urlaub
     2019-03-08 12:40:15   yesterday       none
Attributes:
   room       Test

PiB> "echo 1 `date --date=tomorrow +%m-%d` Urlaub > FHEM/urlaub.holiday"
PiB> set urlaub reload
PiB> l urlaub
Internals:
   CFGFN
   FUUID      5c8244cb-f33f-27f7-37cb-88455a02b0610a86
   HOLIDAYFILE ./FHEM/urlaub.holiday
   NAME       urlaub
   NR         164
   READONLY   0
   STATE      none
   TRIGGERTIME 1552086002.537
   TYPE       holiday
   READINGS:
     2019-03-08 12:40:49   state           none
     2019-03-08 12:40:49   tomorrow        none
     2019-03-08 12:40:49   yesterday       none
Attributes:
   room       Test

PiB>


Was kann da bei mir anders sein als bei Dir? Aber wie gesagt, da kann ich raspbian frisch aus der Tüte nehmen, da ist das auch so.

Gruß Otto
Titel: Antw:"echo willi > Datei.txt" liefert leere Datei
Beitrag von: Wernieman am 08 März 2019, 12:58:23
Laut Rudi im anderen Thread:
Zitat- zweitens wird "" auch mit system implementiert, es wird nur '>> $currlogfile 2>&1 &' angehaengt

Da sind also mehrfache Umleitungen ... weiß jetzt nicht, welche Umleitung welche "schlägt"
Titel: Antw:"echo willi > Datei.txt" liefert leere Datei
Beitrag von: rudolfkoenig am 08 März 2019, 13:03:51
Evtl. liegt es an dem systemshell, der keine doppelte Umleitung erlaubt?
Auf Ubuntu 14.04 und auf OSX funktioniert es.
Habe eine weile rungespielt, ohne Erkenntnisgewinn.
Wenn jemand mehr weiss, der soll sich bitte melden.
Titel: Antw:"echo willi > Datei.txt" liefert leere Datei
Beitrag von: Wernieman am 08 März 2019, 13:37:14
Wenn ich es richtig verstehe wird aus:
echo willi >Datei.txt

vor dem Ausführen:
echo willi >Datei.txt >> $currlogfile 2>&1 &

Da sollte eigentlich die erste Umleitung gewinnen .. komisch ...

Korrektur:
Habe es mal auf der Konsole (ohne FHEM) getestet:
echo willi >Datei.txt >>Datei2.log 2>&1 &
Die 2. Umleitung überschreibt die erste. Ist im Nachhinein auch logisch. 1Es wird einfach nur die Ausgabe umgeleitet. Die 2. Überschreibt aber die erste, d.h. der Inhalt landet in der 2. Umleitung.

Wie Rudi schreibt, könnte auch an der Shell liegen, hier ist es eine bash, würde mich jetzt aber seeehr wundern.
(bei einer dash ist es genau so)

Ergänzung:
Danach müsste obiges geschrieben werden mit:
echo willi | tee Datei.txt

Dann sollte eigentlich folgendes rauskommen:
echo willi | tee Datei.txt >>Datei2.log 2>&1 &

Und das funzt ... habe jetzt hier nur kein Testbares FHEM