Hallo zusammen,
nochmals vielen Dank an alle. Irgendwo gab es immer einen Denkanstoß, der mich meinem Ziel näher brachte
Die Shell ist nun fertig. Habe sie als Code hier mit eingefügt, vielleicht kann sie jemand gebrauchen.
Wie man so eine Datei aus einer anderen aufruft und sich nur das Ergebnis übergeben lässt, weiß ich leider nicht.
Die vielen 'echos' kann man sicher löschen. Beim Programmieren helfen sie mir ungemein.
Ich habe bewusst alle Zwischenschritte zur Berechnung drin gelassen. Kann man sicher auch einkürzen.
Bei der Fehlersuche sind sie aber unverzichtbar. Man wird sonst 'adlig'.
Bei der Auswahl der Feiertage habe ich mich auf Sachsen beschränkt.
Aber auch die anderen dürften kein Problem sein.
Wenn jemand Fehler findet, dann soll sie/er sie bitte NICHT behalten, sondern mir mitteilen.
Code:
1 JAHR=2019 # zu Testzwecken
2
3 JAHR=$(date '+%Y') # Jahr von heute
4 Datum=$(date +%Y-%m-%d) # das heutige Datum
5
6 ##############################################################
7 #variable Feiertage nach der gaussschen Osterformel berechnen#
8 ##############################################################
9
10 a=$((JAHR % 19)) # REST (MOD)
11 b=$((JAHR % 4))
12 c=$((JAHR % 7))
13 k=$((JAHR / 100)) # Ganzzahl (DIV)
14 p=$(((8*$k+13) / 25))
15 q=$((k / 4))
16 M=$(((15+$k-$p-$q) % 30))
17 d=$(((19*$a+$M) % 30))
18 N=$(((4+$k-$q) % 7))
19 e=$(((2*$b+4*$c+6*$d+$N) % 7))
20 ostern=$((22+$d+$e)) # hier wird die eine wichtige Zahl der Osterformel berechnet
21 # echo $a, $b, $c, $k, $p, $q, $M, $d, $N, $e, $ostern
22 abzug=$((305 - $ostern + 1)) # wieviel Tage vom letzten Kalendertag (31.12. & $Jahr) enfernt ist der Ostersonntag
23 ostersonntag="$(date -d "$JAHR-12-31 - $abzug days" '+%Y-%m-%d')" # Datum vom Ostersonntag
24 karfreitag="$(date -d "$ostersonntag - 2 days" '+%Y-%m-%d')" # Ostersonntag -2 Tage = Karfreitag
25 ostermontag="$(date -d "$ostersonntag + 1 days" '+%Y-%m-%d')" # Ostersonntag +1 Tag = Ostermontag
26 maennertag="$(date -d "$ostersonntag + 39 days" '+%Y-%m-%d')" # Ostersonntag + 39 Tage = Christi Himmelfahrt
27 pfingstsonntag="$(date -d "$ostersonntag + 49 days" '+%Y-%m-%d')" # Ostersonntag + 49 Tage = Pfingstsonntag
28 pfingstmontag="$(date -d "$ostersonntag + 50 days" '+%Y-%m-%d')" # Ostersonntag + 50 Tage = Pfingstmontag
29 fronleichnam="$(date -d "$ostersonntag + 60 days" '+%Y-%m-%d')" # Ostersonntag + 60 Tage = Fronleichnam
30
31 echo Ostersonntag - $ostersonntag
32 echo Karfreitag - $karfreitag
33 echo Ostermontag - $ostermontag
34 echo Maennertag - $maennertag
35 echo Pfingstsonntag - $pfingstsonntag
36 echo Pfingstmontag - $pfingstmontag
37 echo Fronleichnam - $fronleichnam
38
39 ############################
40 #Buss- und Bettag berechnen#
41 ############################
42
43 Datum1=$(date -d "$JAHR-12-25" '+%Y-%m-%d') # Datum des 25.12. & $JAHR
44 WT=$(date -d "$Datum1" '+%w') # Wochentag des 25.12. & $JAHR
45 if [ "$WT" == 0 ] # wenn der 25.12. & $JAHR ein Sonntag ist ($WT=0), dann müssen 7 Tage abgezogen werden
46 then WT=7 # um zum 4. Advent zu kommen
47 fi
48 vierteradvent="$(date -d "$Datum1 - $WT days" '+%Y-%m-%d')" # Berechnen des 4. Advents = letzter Sonntag vor dem 25.12. & $JAHR
49 ersteradvent="$(date -d "$vierteradvent - 21 days" '+%Y-%m-%d')" # 21 Tage vor dem 4. Advent ist der 1. Advent
50 totensonntag="$(date -d "$ersteradvent -7 days" '+%Y-%m-%d')" # 1 Sonntag vor dem 1. Advent ist Totensonntag
51 bundbtag="$(date -d "$totensonntag -4 days" '+%Y-%m-%d')" # 4 Tage vor dem Totensonntag ist der Buss- und Bettag
52
53 neujahr=$(date -d "$JAHR-01-01" '+%Y-%m-%d')
54 erstmai=$(date -d "$JAHR-05-01" '+%Y-%m-%d')
55 nft=$(date -d "$JAHR-10-03" '+%Y-%m-%d')
56 rft=$(date -d "$JAHR-10-31" '+%Y-%m-%d')
57 alh=$(date -d "$JAHR-11-01" '+%Y-%m-%d')
58 erstweih=$(date -d "$JAHR-12-25" '+%Y-%m-%d')
59 zweitweih=$(date -d "$JAHR-12-26" '+%Y-%m-%d')
60
61 if [ "$Datum" == "$bundbtag" ] || [ "$Datum" == "$karfreitag" ] || [ "$Datum" == "$maennertag" ] \
62 || [ "$Datum" == "$pfingstmontag" ] || [ "$Datum" == "$erstmai" ] || [ "$Datum" == "$neujahr" ] \
|| [ "$Datum" == "$nft" ] || [ "$Datum" == "$rft" ] || [ "$Datum" == "$erstweih" ] || [ "$Datum" == "$zweitweih" ] # vergleiche, ob heute ein Feiertag ist
64 then
65 echo "heute ist ein Feiertag" # JA --> Aktion ausführen
66 else
67 echo "heute ist kein Feiertag" # NEIN --> Aktion ausführen
68 fi
69
70
71 echo VierterAdvent - $vierteradvent
72 echo ErsterAdvent - $ersteradvent
73 echo TotenSonntag - $totensonntag
74 echo BundBTag - $bundbtag
75 echo WT - $WT
Thomas
Lesezeichen