comp:ewkalbash
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
comp:ewkalbash [2014-07-25 1408] – unnötiger Kram raus werner | comp:ewkalbash [2014-08-12 1703] (aktuell) – Bash ist eh Script werner | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Bash-Script: ewiger Kalender ====== | + | ====== Bash: ewiger Kalender ====== |
Es musste ziemlich fix eine Bestimmung des Wochentags zu einem beliebigen Datum her. Also nimmt man die geeignetste Programmiersprache und tippt los... ;-) | Es musste ziemlich fix eine Bestimmung des Wochentags zu einem beliebigen Datum her. Also nimmt man die geeignetste Programmiersprache und tippt los... ;-) | ||
Zeile 8: | Zeile 8: | ||
#!/bin/bash | #!/bin/bash | ||
- | # Quelle: https:// | + | # Quelle: https:// |
- | + | ||
- | # Jahre im Jahrhundert, | + | |
- | 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 | + | |
- | 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./ | + | |
- | HJ00=5 | + | |
- | HJ01=6 | + | |
- | HJ02=7 | + | |
- | HJ03=1 | + | |
- | HJ04=2 | + | |
- | HJ05=3 | + | |
- | HJ06=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=' | + | |
- | S21=' | + | |
- | S31=' | + | |
- | S41=' | + | |
- | S51=' | + | |
- | S61=' | + | |
- | S71=' | + | |
- | + | ||
- | # Monatstage | + | |
- | MT01=1 | + | |
- | MT02=2 | + | |
- | MT03=3 | + | |
- | MT04=4 | + | |
- | MT05=5 | + | |
- | MT06=6 | + | |
- | MT07=7 | + | |
- | + | ||
- | # Wochentage | + | |
- | WT11=' | + | |
- | WT21=' | + | |
- | WT31=' | + | |
- | WT41=' | + | |
- | WT51=' | + | |
- | WT61=' | + | |
- | WT71=' | + | |
usage() { | usage() { | ||
Zeile 74: | Zeile 15: | ||
} # usage | } # usage | ||
- | # Vorgehen: | + | getWochentag() { |
- | SOLLTAG=$1 | + | |
- | SOLLMON=$2 | + | SOLLTAG=$1 |
- | SOLLJHR=$3 | + | SOLLMON=$2 |
- | if [ -z " | + | SOLLJHR=$3 |
- | usage | + | |
- | exit 1 | + | |
- | fi | + | VERS=$(echo |
+ | [ -z "$VERS" | ||
+ | [ -z " | ||
+ | VERS=$(echo $SOLLMON | tr -d ' | ||
+ | [ -z "$VERS" | ||
+ | [ " | ||
+ | VERS=$(echo $SOLLJHR | tr -d ' | ||
+ | [ -z " | ||
+ | if [ $FEHLER -ne 0 ]; then | ||
+ | usage | ||
+ | exit 1 | ||
+ | fi | ||
+ | # SOLLTAG=$(echo " | ||
+ | # SOLLMON=$(echo " | ||
+ | [ " | ||
+ | [ " | ||
+ | # Jahre im Jahrhundert, | ||
+ | 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 | ||
+ | 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./ | ||
+ | HJ03=1 | ||
+ | HJ04=2 | ||
+ | HJ05=3 | ||
+ | HJ06=4 | ||
+ | HJ00=5 | ||
+ | HJ01=6 | ||
+ | HJ02=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=' | ||
+ | S21=' | ||
+ | S31=' | ||
+ | S41=' | ||
+ | S51=' | ||
+ | S61=' | ||
+ | S71=' | ||
+ | # Monatstage | ||
+ | MT01=1 | ||
+ | MT02=2 | ||
+ | MT03=3 | ||
+ | MT04=4 | ||
+ | MT05=5 | ||
+ | MT06=6 | ||
+ | MT07=7 | ||
+ | # Wochentage | ||
+ | WT11=' | ||
+ | WT21=' | ||
+ | WT31=' | ||
+ | WT41=' | ||
+ | WT51=' | ||
+ | WT61=' | ||
+ | WT71=' | ||
+ | # Vorgehen: | ||
+ | # -> man sucht die beiden letzten Stellen des Jahrs in der Jahrestabelle: | ||
+ | # -> man sucht das Jahrhundert in der Jahrhunderttabelle: | ||
+ | # -> 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: | ||
+ | # -> in der Monatstagetabelle sucht man den Tag des Zieldatums: Zeile merken | ||
+ | # -> im Schnittpunkt Monatstagszeile/ | ||
- | # Jahresspalte | + | |
- | JHRSTR=${SOLLJHR: | + | JHRSTR=${SOLLJHR: |
- | printf -v JHRZHL " | + | printf -v JHRZHL " |
- | JHRVAR=" | + | JHRVAR=" |
- | eval JAHRESSPALTE=\$$JHRVAR | + | eval JAHRESSPALTE=\$$JHRVAR |
- | + | # Jahrhundertzeile | |
- | JHUSTR=${SOLLJHR: | + | JHUSTR=${SOLLJHR: |
- | if [ $JHUSTR -lt 15 ]; then | + | if [ $JHUSTR -lt 15 ]; then |
- | JHHUVAR=" | + | JHHUVAR=" |
- | else | + | else |
- | JHHUVAR=" | + | JHHUVAR=" |
- | fi | + | fi |
- | eval JHHUZEILE=\$$JHHUVAR | + | eval JHHUZEILE=\$$JHHUVAR |
- | + | # Sonntagsbuchstabe | |
- | SONNBUCHVAR=" | + | SONNBUCHVAR=" |
- | eval SONNBUCHST=\$$SONNBUCHVAR | + | eval SONNBUCHST=\$$SONNBUCHVAR |
- | + | # Monatszeile | |
- | printf -v MONSTR " | + | printf -v MONSTR " |
- | MONVAR=" | + | MONVAR=" |
eval MONZEILE=\$$MONVAR | eval MONZEILE=\$$MONVAR | ||
- | if [ " | + | SCHAJA=$(is_Leapyear $SOLLJHR) |
- | let " | + | if [ $SCHAJA -eq 1 ]; then |
- | fi | + | |
- | + | let " | |
- | WTSPALTE=0 | + | fi |
- | TESTSP=1 | + | fi |
- | while [ $WTSPALTE -eq 0 ]; do | + | # Wochentagsspalte |
- | TESTFLD=" | + | |
- | eval TESTWRT=\$$TESTFLD | + | TESTSP=1 |
- | [ "x$TESTWRT" | + | while [ $WTSPALTE -eq 0 ]; do |
- | let " | + | TESTFLD=" |
- | done | + | eval TESTWRT=\$$TESTFLD |
- | + | [ " | |
- | printf -v WUTAG " | + | let " |
- | TAGVAR=" | + | done |
- | eval TAGZEILE=\$$TAGVAR | + | # Tageszeile |
- | + | printf -v WUTAG " | |
- | ZIELVAR=" | + | TAGVAR=" |
- | eval ZIELWERT=\$$ZIELVAR | + | eval TAGZEILE=\$$TAGVAR |
- | + | # Wochentag | |
- | echo " | + | ZIELVAR=" |
+ | eval ZIELWERT=\$$ZIELVAR | ||
+ | echo " | ||
+ | } # getWochentag | ||
</ | </ |
comp/ewkalbash.txt · Zuletzt geändert: 2014-08-12 1703 von werner