Seite 1 von 1

Merkwürdiges Problem mit selbstgebautem Script

Verfasst: Samstag 13. Januar 2024, 21:29
von Andy-452
Hallo Leute (und ein frohes Neues) :)

Ich hatte mir ein kleines Script gebaut, welches Tage herunterzählt; zuletzt war als Zieldatum augewiesen "Dec 21". Damit funktionierte alles ohne Probleme wie gewünscht.

Nun wollte ich aus gegebenem Anlaß das Datum ändern nach "Mar 20"; und sonderbar, jetzt erscheint eine Fehlermeldung, da heißt es plötzlich:

Code: Alles auswählen

WSW.sh: 5: arithmetic expression: expecting EOF: "080 - 013"
Wähle ich statt dessen als Datum "Mar 17", wird das Script ausgeführt. Ab "Mar 18" gibt es wieder eine Fehlerausgabe:

Code: Alles auswählen

WSW.sh: 5: arithmetic expression: expecting EOF: "078 - 013"
Das schnalle ich nicht :D Kann mir jemand verraten, was das Script gegen den 20. März haben kann... ?


So long,
Andy

Re: Merkwürdiges Problem mit selbstgebautem Script

Verfasst: Samstag 13. Januar 2024, 22:05
von gosia
Hallo Andy,
Andy-452 hat geschrieben: Samstag 13. Januar 2024, 21:29 Kann mir jemand verraten, was das Script gegen den 20. März haben kann
Chapeau! für alle, die das auch ohne Kenntnis des Skriptes sagen können ;)
Aber ich denke, es geht schneller, wenn Du das Skript auch veröffentlichst. Aber ich gehe mal davon aus, dass durch die führende 0 der Ausdruck als Oktalzahl betrachtet wird und eine 8 in einer Oktalzahl (080 oder 078) zu gross, bzw. nicht zulässig ist.
"Constants with a leading 0 are interpreted as octal numbers."
https://www.gnu.org/savannah-checkouts/ ... Arithmetic

viele Grüsse gosia

Re: Merkwürdiges Problem mit selbstgebautem Script

Verfasst: Samstag 13. Januar 2024, 22:19
von Andy-452
gosia hat geschrieben: Samstag 13. Januar 2024, 22:05 ...Chapeau! für alle, die das auch ohne Kenntnis des Skriptes sagen können ;)
Mir geht die Winterzeit vollständig auf den Senkel ;D Das erste Script hat die Tage heruntergezählt bis zur Wintersonnenwende; nun wird's Zeit, umzustellen auf Frühlingsanfang. Und so sieht das aus... oder besser, würde es aussehen, wenn's denn funktionieren würde:

Code: Alles auswählen

#!/bin/sh

WSW=`date -d "Mar 20" +%j`
TODAY=`date +%j`
DAYS=$(($WSW - $TODAY))

case $DAYS in
  0) echo "FRÜHLINGSANFANG!";;
  [0-9]*) echo "... noch $DAYS Tage bis Frühlingsanfang :)";;
esac
So nu 8)

So long,
Andy

Re: Merkwürdiges Problem mit selbstgebautem Script

Verfasst: Samstag 13. Januar 2024, 22:55
von gosia
Hallo Andy,
probiere mal so

Code: Alles auswählen

#!/bin/sh

WSW=`date -d "Mar 20" +%_j`
TODAY=`date +%_j`
DAYS=$(($WSW - $TODAY))

case $DAYS in
  0) echo "FRÜHLINGSANFANG!";;
  [0-9]*) echo "... noch $DAYS Tage bis Frühlingsanfang :)";;
esac
nur kurz getestet, aber +%_j bewirkt, dass die jeweilige Tagnummer ohne führende Null ausgegeben und somit nicht als Oktalzahl interpretiert wird.

Code: Alles auswählen

date -d "Mar 21" +%_j
 81
date +%_j
 13
geht sicher eleganter, aber was solls...

viele Grüsse gosia

Re: Merkwürdiges Problem mit selbstgebautem Script

Verfasst: Samstag 13. Januar 2024, 22:59
von maroco
Hallo Andy-452,

Zahlen mit führenden Nullen werden von der Bash-Shell als Oktalzahlen interpretiert. Diese akzeptieren nur Ziffern von 0 bis 7; bei einer 8 oder 9 wird eine Fehlermeldung ausgeworfen.

Setze in Zeile 5 die fraglichen Variablen mit vorangestelltem 10# expliziert zur Basis 10, dann wird die Arithmetik so ausgeführt, wie du es beabsichtigst.

Code: Alles auswählen

DAYS=$((10#$WSW - 10#$TODAY))
Nettes Skript, übrigens. :)

Edit: Sehe eben erst, dass gosia auch eine schöne Lösung vorschlägt! :D

Gruß
maroco

Re: Merkwürdiges Problem mit selbstgebautem Script

Verfasst: Samstag 13. Januar 2024, 23:20
von Andy-452
maroco hat geschrieben: Samstag 13. Januar 2024, 22:59 ...Setze in Zeile 5 die fraglichen Variablen mit vorangestelltem 10# expliziert zur Basis 10, dann wird die Arithmetik so ausgeführt, wie du es beabsichtigst.

Code: Alles auswählen

DAYS=$((10#$WSW - 10#$TODAY))
Oh yeah, bingo, DAS funktioniert :D
Na, so komme ich doch gleich wieder viel besser klar mit Schippen und Streuen und langen Unterhosen ;)

Meinen herzlichen Dank an alle :)

So long,
Andy

Re: Merkwürdiges Problem mit selbstgebautem Script

Verfasst: Sonntag 14. Januar 2024, 15:03
von country
Hey,
cooles Script hab ich direkt in meine Snippet Ordner aufgenommen. :))

Re: Merkwürdiges Problem mit selbstgebautem Script

Verfasst: Sonntag 14. Januar 2024, 16:32
von Andy-452
country hat geschrieben: Sonntag 14. Januar 2024, 15:03 Hey,
cooles Script hab ich direkt in meine Snippet Ordner aufgenommen. :))
...danke :)

Ich habe mir das so eingerichtet, daß das Script (umbenannt nach FA für Frühlingsanfang ;) ) über ein zweites Script (FA_exec) aufgerufen und gestartet wird; dieses sieht dann so aus:

Code: Alles auswählen

#!/bin/sh
gnome-terminal -e "bash -c 'sh FA.sh; read -n1'"
Vorteil: ich klicke das Script an, das Terminal öffnet sich, zählt die Tage... und ich kann es mit Tastendruck wieder schließen. Easy :D

EDIT: Noch eleganter und einfacher geht das nun mit Tastenkombi (ALT+C, C für count-down :) ) Vielleicht läßt sich solches Script ja auch noch mal anderweitig verwenden.

So long,
Andy

Re: Merkwürdiges Problem mit selbstgebautem Script

Verfasst: Montag 15. Januar 2024, 15:07
von country
Ich lass es momentan ausführen wenn mein Terminal startet, dann steht in der ersten Zeile der Countdown, aber ja natürlich lässt sich damit noch was machen ;D