nischram / E3dcGui

E3DC S10 / HomeMatic Daten abfragen, darstellen oder senden
37 stars 14 forks source link

S10History ./getYearperDay.sh läuft nicht #20

Closed nischram closed 7 years ago

nischram commented 7 years ago

Bei den Programmen /example/getYearperDay.sh und /example/getYearperMonth.sh kommt immer folgende Fehlermeldung: ./getYearperDay.sh: let: not found oder ./getYearperMonth.sh: let: not found In der Ausgabe ist zu sehen, dass die Tage oder Monate nicht hochgezählt werden.

Folgende Abhilfe habe ich gefunden: Erste Zeile: #!/bin/sh ändern in: #! /bin/bash Zeile 65: let i=$i+1; ändern in: let i=$i+1

Zusätzlich kommt beim /example/getYearperMonth.sh folgende Fehlermeldung: ./getYearperMonth.sh: Syntax error: end of file unexpected (expecting "done")

Abhilfe: Zwischen den Zeilen 65 und 66 fi let i=$i+1 ein "done" einfügen: fi done let i=$i+1

Da es die E3DC S10 schon seit 2012 gibt, werde ich noch die Jahreszahl für die Abfrage von 2013 auf 2011 ändern.

nischram commented 7 years ago

Update V1.46

nischram commented 7 years ago

@RalfJL Hallo Ralf, kannst du die Oben aufgeführten Probleme bestätigen oder ist die Fehlermeldung ./getYearperDay.sh: let: not found nur System oder Betriebssystem abhängig? Viele Grüße Nico

RalfJL commented 7 years ago

Hi Nico, der let Befehl ist shell abhängig und damit hängt es davon ab, was für eine Shell sich inter /bin/sh "versteckt". (bash, sh, ksh, zsh, tcsh, csh, ....) Hier wird mit einer Shell Variablen gerechnet und das ist in anderen shell anders. Also hast Du absolut Recht /bin/sh auf /bin/bash zu ändern. Der Semikolon ist nicht falsch, aber auch nicht nötig. Kommt von meiner PERL Programmiererei. In der bash wird der Semikolon verwendet um 2 Befehle in einer Zeile von einander zu trennen. Z.B. x1=1; x2=2 Ein Semikolon am Ende eines Ausdrucks ist also nicht falsch, die Shell würde einfach ein "leeres" Kommando finden und übergehen.

Das done fehlt in getYearperMonth.sh. Vielen Dank werde ich gleich ausbessern. Und die bash auch.

Ralf

RalfJL commented 7 years ago

Hi Nico,

sorry noch etwas. Ich musste den "alias" ändern. Bei CentOS ist zwar sh ein symbolic link auf bash aber anscheinend verhält sich die bash, je nach Aufruf etwas anders. D.h bei /bin/bash funktioniert der alias nicht mehr. Bitte Änderungen bei Dir übernehmen. Ausserdem habe ich die Semikolons aufgeräumt. Verwirren nur.

Danke

Ralf

nischram commented 7 years ago

@RalfJL Super, danke für die Rückmeldung und die ausführliche Antwort! Die Änderung mit dem "alias" habe ich hochgeladen. Danke! Gruß Nico