Benutzer-Werkzeuge

Webseiten-Werkzeuge


comp:ewkalbash

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
comp:ewkalbash [2014-07-25 1408] – unnötiger Kram raus wernercomp:ewkalbash [2014-08-12 1657] – funktionierender Code :-) werner
Zeile 8: Zeile 8:
 #!/bin/bash #!/bin/bash
  
-# Quelle: https://de.wikipedia.org/wiki/Ewiger_Kalender 2014-07-25 +# Quelle: https://de.wikipedia.org/wiki/Ewiger_Kalender Stand: 2014-07-25
- +
-# Jahre im Jahrhundert, relevant ist die Spalte +
-J00=1 J06=1       J17=1 J23=1 J28=1 J34=1       J45=1 J51=1 J56=1 J62=1       J73=1 J79=1 J84=1 J90=1 +
-J01=2 J07=2 J12=2 J18=2       J29=2 J35=2 J40=2 J46=2       J57=2 J63=2 J68=2 J74=2       J85=2 J91=2 J96=2 +
-J02=3       J13=3 J19=3 J24=3 J30=3       J41=3 J47=3 J52=3 J58=3       J69=3 J75=3 J80=3 J86=3       J97=3 +
-J03=4 J08=4 J14=4       J25=4 J31=4 J36=4 J42=4       J53=4 J59=4 J64=4 J70=4       J81=4 J87=4 J92=4 J98=4 +
-      J09=5 J15=5 J20=5 J26=5       J37=5 J43=5 J48=5 J54=5       J65=5 J71=5 J76=5 J82=5       J93=5 J99=5 +
-J04=6 J10=6       J21=6 J27=6 J32=6 J38=6       J49=6 J55=6 J60=6 J66=6       J77=6 J83=6 J88=6 J94=6 +
-J05=7 J11=7 J16=7 J22=7       J33=7 J39=7 J44=7 J50=7       J61=7 J67=7 J72=7 J78=7       J89=7 J95=7 +
- +
-# Zahl der Jahrhunderte (jul./greg.) +
-HJ00=5  HJ07=5  HJ14=5  HJ21=5  HG17=5  HG21=5 +
-HJ01=6  HJ08=6  HJ15=6  HJ22=6 +
-HJ02=7  HJ09=7  HJ16=6  HJ23=7  HG18=7  HG22=7 +
-HJ03=1  HJ10=1  HJ17=1 +
-HJ04=2  HJ11=2  HJ18=2  HG15=2  HG19=2 +
-HJ05=3  HJ12=3  HJ19=3  HG16=3  HG20=3 +
-HJ06=4  HJ13=4  HJ20=4 +
- +
-# Monate +
-M01=2 +
-M02=5 +
-M03=5 +
-M04=1 +
-M05=3 +
-M06=6 +
-M07=1 +
-M08=4 +
-M09=7 +
-M10=2 +
-M11=5 +
-M12=7 +
- +
-# Sonntagsbuchstaben +
-S11='F'  S12='E'  S13='D'  S14='C'  S15='B'  S16='A'  S17='G' +
-S21='G'  S22='F'  S23='E'  S24='D'  S25='C'  S26='B'  S27='A' +
-S31='A'  S32='G'  S33='F'  S34='E'  S35='D'  S36='C'  S37='B' +
-S41='B'  S42='A'  S43='G'  S44='F'  S45='E'  S46='D'  S47='C' +
-S51='C'  S52='B'  S53='A'  S54='G'  S55='F'  S56='E'  S57='D' +
-S61='D'  S62='C'  S63='B'  S64='A'  S65='G'  S66='F'  S67='E' +
-S71='E'  S72='D'  S73='C'  S74='B'  S75='H'  S67='G'  S77='F' +
- +
-# Monatstage +
-MT01=1  MT08=1  MT15=1  MT22=1  MT29=1 +
-MT02=2  MT09=2  MT16=2  MT23=2  MT30=2 +
-MT03=3  MT10=3  MT17=3  MT24=3  MT31=3 +
-MT04=4  MT11=4  MT18=4  MT25=4 +
-MT05=5  MT12=5  MT19=5  MT26=5 +
-MT06=6  MT13=6  MT20=6  MT27=6 +
-MT07=7  MT14=7  MT21=7  MT28=7 +
- +
-# Wochentage +
-WT11='Mo'  WT12='Di'  WT13='Mi'  WT14='Do'  WT15='Fr'  WT16='Sa'  WT17='So' +
-WT21='Di'  WT22='Mi'  WT23='Do'  WT24='Fr'  WT25='Sa'  WT26='So'  WT27='Mo' +
-WT31='Mi'  WT32='Do'  WT33='Fr'  WT34='Sa'  WT35='So'  WT36='Mo'  WT37='Di' +
-WT41='Do'  WT42='Fr'  WT43='Sa'  WT44='So'  WT45='Mo'  WT46='Di'  WT47='Mi' +
-WT51='Fr'  WT52='Sa'  WT53='So'  WT54='Mo'  WT55='Di'  WT56='Mi'  WT57='Do' +
-WT61='Sa'  WT62='So'  WT63='Mo'  WT64='Di'  WT65='Mi'  WT66='Do'  WT67='Fr' +
-WT71='So'  WT72='Mo'  WT73='Di'  WT74='Mi'  WT75='Do'  WT76='Fr'  WT77='Sa'+
  
 usage() { usage() {
Zeile 74: Zeile 15:
 } # usage } # usage
  
-Vorgehen: +getWochentag() { 
-SOLLTAG=$1 +    Fehlerabfangversuch 
-SOLLMON=$2 +    SOLLTAG=$1 
-SOLLJHR=$3 +    SOLLMON=$2 
-if [ -z "$1" --z "$2" --z "$3" ]; then +    SOLLJHR=$3 
-    usage +    FEHLER=0 
-    exit 1 +    [ -z "$SOLLTAG" ] && FEHLER=1 
-fi+    VERS=$(echo "$SOLLTAG" | tr -d '[0-9]'
 +    [ -z "$VERS] || FEHLER=1 
 +    [ -z "$SOLLMON" ] && FEHLER=1 
 +    VERS=$(echo $SOLLMON | tr -d '[0-9]'
 +    [ -z "$VERS] || FEHLER=1 
 +    [ "x${#SOLLJHR}" != "x4" ] && FEHLER=1 
 +    VERS=$(echo $SOLLJHR | tr -d '[0-9]'
 +    [ -z "$VERS" ] || FEHLER=1 
 +    if [ $FEHLER -ne 0 ]; then 
 +        usage 
 +        exit 1 
 +    fi 
 +#    SOLLTAG=$(echo "$SOLLTAG" | tr -d '0') # Pech am 10., 20. und 30. eines Monats 
 +#    SOLLMON=$(echo "$SOLLMON" | tr -d '0') # Pech im Oktober 
 +    [ "y${SOLLTAG:0:1}" = "y0" ] && SOLLTAG="${SOLLTAG:1:1}" 
 +    [ "y${SOLLMON:0:1}" = "y0" ] && SOLLMON="${SOLLMON:1:1}" 
 +    # Jahre im Jahrhundert, relevant ist die Spalte 
 +    J00=1 J06=1       J17=1 J23=1 J28=1 J34=1       J45=1 J51=1 J56=1 J62=1       J73=1 J79=1 J84=1 J90=1 
 +    J01=2 J07=2 J12=2 J18=2       J29=2 J35=2 J40=2 J46=2       J57=2 J63=2 J68=2 J74=2       J85=2 J91=2 J96=2 
 +    J02=3       J13=3 J19=3 J24=3 J30=3       J41=3 J47=3 J52=3 J58=3       J69=3 J75=3 J80=3 J86=3       J97=3 
 +    J03=4 J08=4 J14=4       J25=4 J31=4 J36=4 J42=4       J53=4 J59=4 J64=4 J70=4       J81=4 J87=4 J92=4 J98=4 
 +          J09=5 J15=5 J20=5 J26=5       J37=5 J43=5 J48=5 J54=5       J65=5 J71=5 J76=5 J82=5       J93=5 J99=5 
 +    J04=6 J10=6       J21=6 J27=6 J32=6 J38=6       J49=6 J55=6 J60=6 J66=6       J77=6 J83=6 J88=6 J94=6 
 +    J05=7 J11=7 J16=7 J22=7       J33=7 J39=7 J44=7 J50=7       J61=7 J67=7 J72=7 J78=7       J89=7 J95=7 
 +    # Zahl der Jahrhunderte (jul./greg.) 
 +    HJ03=1  HJ10=1  HJ17=1 
 +    HJ04=2  HJ11=2  HJ18=2          HG15=2  HG19=2 
 +    HJ05=3  HJ12=3  HJ19=3          HG16=3  HG20=3 
 +    HJ06=4  HJ13=4  HJ20=4 
 +    HJ00=5  HJ07=5  HJ14=5  HJ21=5  HG17=5  HG21=5 
 +    HJ01=6  HJ08=6  HJ15=6  HJ22=6 
 +    HJ02=7  HJ09=7  HJ16=6  HJ23=7  HG18=7  HG22=7 
 +    # Monate 
 +    M01=2    M02=5    M03=5    M04=1    M05=3    M06=6 
 +    M07=1    M08=4    M09=7    M10=2    M11=5    M12=7 
 +    # Sonntagsbuchstaben 
 +    S11='F'  S12='E'  S13='D'  S14='C'  S15='B'  S16='A'  S17='G' 
 +    S21='G'  S22='F'  S23='E'  S24='D'  S25='C'  S26='B'  S27='A' 
 +    S31='A'  S32='G'  S33='F'  S34='E'  S35='D'  S36='C'  S37='B' 
 +    S41='B'  S42='A'  S43='G'  S44='F'  S45='E'  S46='D'  S47='C' 
 +    S51='C'  S52='B'  S53='A'  S54='G'  S55='F'  S56='E'  S57='D' 
 +    S61='D'  S62='C'  S63='B'  S64='A'  S65='G'  S66='F'  S67='E' 
 +    S71='E'  S72='D'  S73='C'  S74='B'  S75='H'  S67='G'  S77='F' 
 +    # Monatstage 
 +    MT01=1  MT08=1  MT15=1  MT22=1  MT29=1 
 +    MT02=2  MT09=2  MT16=2  MT23=2  MT30=2 
 +    MT03=3  MT10=3  MT17=3  MT24=3  MT31=3 
 +    MT04=4  MT11=4  MT18=4  MT25=4 
 +    MT05=5  MT12=5  MT19=5  MT26=5 
 +    MT06=6  MT13=6  MT20=6  MT27=6 
 +    MT07=7  MT14=7  MT21=7  MT28=7 
 +    # Wochentage 
 +    WT11='Mo'  WT12='Di'  WT13='Mi'  WT14='Do'  WT15='Fr'  WT16='Sa'  WT17='So' 
 +    WT21='Di'  WT22='Mi'  WT23='Do'  WT24='Fr'  WT25='Sa'  WT26='So'  WT27='Mo' 
 +    WT31='Mi'  WT32='Do'  WT33='Fr'  WT34='Sa'  WT35='So'  WT36='Mo'  WT37='Di' 
 +    WT41='Do'  WT42='Fr'  WT43='Sa'  WT44='So'  WT45='Mo'  WT46='Di'  WT47='Mi' 
 +    WT51='Fr'  WT52='Sa'  WT53='So'  WT54='Mo'  WT55='Di'  WT56='Mi'  WT57='Do' 
 +    WT61='Sa'  WT62='So'  WT63='Mo'  WT64='Di'  WT65='Mi'  WT66='Do'  WT67='Fr' 
 +    WT71='So'  WT72='Mo'  WT73='Di'  WT74='Mi'  WT75='Do'  WT76='Fr'  WT77='Sa' 
 +    # Vorgehen: 
 +    # -> man sucht die beiden letzten Stellen des Jahrs in der Jahrestabelle: Spalte merken 
 +    # -> man sucht das Jahrhundert in der Jahrhunderttabelle: Zeile merken 
 +    # -> an dieser Zeile und Spalte der Sonntagsbuchstabentabelle findet man den Sonntagsbuchstaben 
 +    # -> man sucht die Monatstabelle den Monat und in der selben Zeile wieder den oben gefundenen Sonntagsbuchstaben: Spalte merken 
 +    # -> in der Monatstagetabelle sucht man den Tag des Zieldatums: Zeile merken 
 +    # -> im Schnittpunkt Monatstagszeile/2. Sonntagsspalte findet sich der Wochentag
  
-# Jahresspalte +    # Jahresspalte 
-JHRSTR=${SOLLJHR:(-2)} +    JHRSTR=${SOLLJHR:(-2)} 
-printf -v JHRZHL "%02d" $JHRSTR +    printf -v JHRZHL "%02d" $JHRSTR 
-JHRVAR="J${JHRZHL}" +    JHRVAR="J${JHRZHL}" 
-eval JAHRESSPALTE=\$$JHRVAR +    eval JAHRESSPALTE=\$$JHRVAR 
- +    # Jahrhundertzeile 
-JHUSTR=${SOLLJHR:0:2} +    JHUSTR=${SOLLJHR:0:2} 
-if [ $JHUSTR -lt 15 ]; then +    if [ $JHUSTR -lt 15 ]; then 
-    JHHUVAR="HJ${JHUSTR}" +        JHHUVAR="HJ${JHUSTR}" 
-else +    else 
-    JHHUVAR="HG${JHUSTR}" +        JHHUVAR="HG${JHUSTR}" 
-fi +    fi 
-eval JHHUZEILE=\$$JHHUVAR +    eval JHHUZEILE=\$$JHHUVAR 
- +    # Sonntagsbuchstabe 
-SONNBUCHVAR="S${JHHUZEILE}${JAHRESSPALTE}" +    SONNBUCHVAR="S${JHHUZEILE}${JAHRESSPALTE}" 
-eval SONNBUCHST=\$$SONNBUCHVAR +    eval SONNBUCHST=\$$SONNBUCHVAR 
- +    # Monatszeile 
-printf -v MONSTR "%02d" $SOLLMON +    printf -v MONSTR "%02d" $SOLLMON 
-MONVAR="M$MONSTR"+    MONVAR="M$MONSTR"
     eval MONZEILE=\$$MONVAR     eval MONZEILE=\$$MONVAR
-if [ "$MONSTR" = '01' -o "$MONSTR" = '02' ]; then +    SCHAJA=$(is_Leapyear $SOLLJHR) 
-    let "MONZEILE += 1" +    if [ $SCHAJA -eq 1 ]; then 
-fi +        if [ "$MONSTR" = '01' -o "$MONSTR" = '02' ]; then 
- +            let "MONZEILE -= 1" 
-WTSPALTE=0 +        fi 
-TESTSP=1 +    fi 
-while [ $WTSPALTE -eq 0 ]; do +    # Wochentagsspalte 
-    TESTFLD="S${MONZEILE}${TESTSP}" +    WTSPALTE=0 
-    eval TESTWRT=\$$TESTFLD +    TESTSP=1 
-    [ "x$TESTWRT" = "x$SONNBUCHST" ] && WTSPALTE=$TESTSP +    while [ $WTSPALTE -eq 0 ]; do 
-    let "TESTSP += 1" +        TESTFLD="S${MONZEILE}${TESTSP}" 
-done +        eval TESTWRT=\$$TESTFLD 
- +        [ "$TESTWRT" = "$SONNBUCHST" ] && WTSPALTE=$TESTSP 
-printf -v WUTAG "%02d" $SOLLTAG +        let "TESTSP += 1" 
-TAGVAR="MT${WUTAG}" +    done 
-eval TAGZEILE=\$$TAGVAR +    # Tageszeile 
- +    printf -v WUTAG "%02d" $SOLLTAG 
-ZIELVAR="WT${TAGZEILE}${WTSPALTE}" +    TAGVAR="MT${WUTAG}" 
-eval ZIELWERT=\$$ZIELVAR +    eval TAGZEILE=\$$TAGVAR 
- +    # Wochentag 
-echo "$ZIELWERT"+    ZIELVAR="WT${TAGZEILE}${WTSPALTE}" 
 +    eval ZIELWERT=\$$ZIELVAR 
 +    echo "$ZIELWERT" 
 +} # getWochentag
 </file> </file>
comp/ewkalbash.txt · Zuletzt geändert: 2014-08-12 1703 von werner

Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki