Merkwürdiges Problem mit selbstgebautem Script Thema ist als GELÖST markiert

Die grandiose Manjaro Cinnamon Edition ist hier die Diskussionsplattform
Antworten

Themen Author
Andy-452
Forum Kenner
Forum Kenner
Beiträge: 101
Registriert: Montag 14. Mai 2018, 22:56
CPU: AMD FX(tm)-4300 Quad-Core Processor
GPU: NVIDIA GeForce GT 730/PCIe/SSE2
Kernel: 6.1.29-1
Desktop-Variante: plasmashell 5.27.4
GPU Treiber: video-nvidia-470xx
Hat sich bedankt: 6 Mal
Danksagung erhalten: 11 Mal

Merkwürdiges Problem mit selbstgebautem Script

#1

Beitrag 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
Benutzeravatar

gosia
Forum Held
Forum Held
Beiträge: 2256
Registriert: Dienstag 24. Mai 2016, 13:33
CPU: Intel i5-3210M
GPU: Intel HD 4000
Kernel: 4.19
Desktop-Variante: Openbox
GPU Treiber: i915
Hat sich bedankt: 20 Mal
Danksagung erhalten: 509 Mal

Re: Merkwürdiges Problem mit selbstgebautem Script

#2

Beitrag 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

Themen Author
Andy-452
Forum Kenner
Forum Kenner
Beiträge: 101
Registriert: Montag 14. Mai 2018, 22:56
CPU: AMD FX(tm)-4300 Quad-Core Processor
GPU: NVIDIA GeForce GT 730/PCIe/SSE2
Kernel: 6.1.29-1
Desktop-Variante: plasmashell 5.27.4
GPU Treiber: video-nvidia-470xx
Hat sich bedankt: 6 Mal
Danksagung erhalten: 11 Mal

Re: Merkwürdiges Problem mit selbstgebautem Script

#3

Beitrag 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
Benutzeravatar

gosia
Forum Held
Forum Held
Beiträge: 2256
Registriert: Dienstag 24. Mai 2016, 13:33
CPU: Intel i5-3210M
GPU: Intel HD 4000
Kernel: 4.19
Desktop-Variante: Openbox
GPU Treiber: i915
Hat sich bedankt: 20 Mal
Danksagung erhalten: 509 Mal

Re: Merkwürdiges Problem mit selbstgebautem Script

#4

Beitrag 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

maroco
Forum Kenner
Forum Kenner
Beiträge: 103
Registriert: Freitag 29. November 2019, 08:07
CPU: Dual Core Intel Core i5-7200U
GPU: Intel HD Graphics 620
Kernel: 6.1
Desktop-Variante: IceWM
GPU Treiber: i915
Hat sich bedankt: 5 Mal
Danksagung erhalten: 39 Mal
Kontaktdaten:

Re: Merkwürdiges Problem mit selbstgebautem Script

#5

Beitrag 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
MediaTerm, mein MediathekView-Client für die Kommandozeile: https://mediaterm.martikel.bplaced.net/

Themen Author
Andy-452
Forum Kenner
Forum Kenner
Beiträge: 101
Registriert: Montag 14. Mai 2018, 22:56
CPU: AMD FX(tm)-4300 Quad-Core Processor
GPU: NVIDIA GeForce GT 730/PCIe/SSE2
Kernel: 6.1.29-1
Desktop-Variante: plasmashell 5.27.4
GPU Treiber: video-nvidia-470xx
Hat sich bedankt: 6 Mal
Danksagung erhalten: 11 Mal

Re: Merkwürdiges Problem mit selbstgebautem Script

#6

Beitrag 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
Benutzeravatar

country
Forum Held
Forum Held
Beiträge: 1118
Registriert: Samstag 16. Oktober 2021, 02:12
CPU: Ryzen 7 3700X
GPU: RTX 3060Ti
Kernel: up-to-date
Desktop-Variante: Cinnamon
GPU Treiber: RTX 3060Ti
Hat sich bedankt: 122 Mal
Danksagung erhalten: 227 Mal

Re: Merkwürdiges Problem mit selbstgebautem Script

#7

Beitrag von country »

Hey,
cooles Script hab ich direkt in meine Snippet Ordner aufgenommen. :))

Themen Author
Andy-452
Forum Kenner
Forum Kenner
Beiträge: 101
Registriert: Montag 14. Mai 2018, 22:56
CPU: AMD FX(tm)-4300 Quad-Core Processor
GPU: NVIDIA GeForce GT 730/PCIe/SSE2
Kernel: 6.1.29-1
Desktop-Variante: plasmashell 5.27.4
GPU Treiber: video-nvidia-470xx
Hat sich bedankt: 6 Mal
Danksagung erhalten: 11 Mal

Re: Merkwürdiges Problem mit selbstgebautem Script

#8

Beitrag 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
Benutzeravatar

country
Forum Held
Forum Held
Beiträge: 1118
Registriert: Samstag 16. Oktober 2021, 02:12
CPU: Ryzen 7 3700X
GPU: RTX 3060Ti
Kernel: up-to-date
Desktop-Variante: Cinnamon
GPU Treiber: RTX 3060Ti
Hat sich bedankt: 122 Mal
Danksagung erhalten: 227 Mal

Re: Merkwürdiges Problem mit selbstgebautem Script

#9

Beitrag 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
Antworten

Zurück zu „Manjaro Cinnamon Edition“