Skip to content

Instantly share code, notes, and snippets.

@Stefan-Wagner
Last active August 29, 2015 13:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Stefan-Wagner/8695834 to your computer and use it in GitHub Desktop.
Save Stefan-Wagner/8695834 to your computer and use it in GitHub Desktop.
A script which takes a list of birthdays (ddmmyy), sizes in cm and names (in line 4 to 30 - first lines are comment) and outputs moonphase, date and size.
# Geburtstage der dt. Bundesliga - Hertha BSC
#
#
301089 188 Burchart
220788 187 Kraft
270693 196 Sprint
280193 193 Brooks
050881 190 Franz
110790 172 Holland
060684 192 Hubnik
140285 185 Janker
100777 183 Kobiaschvili
150188 191 Langkamp
301086 176 Pekarik
211186 183 vandenBergh
230187 178 Baumjohann
180788 183 Ben-Hatira
100686 176 Hosogai
221180 179 Kluge
020588 180 Lustenberger
210395 174 Mukhtar
060582 180 Ndjeng
221183 191 Niemeyer
110586 175 Ronny
010493 180 Schulz
280586 184 Allagui
151291 189 Lasogga
220186 185 Ramos
100889 180 Sahar
291187 194 Wagner
#!/bin/bash
#
# mittlere Mondphasendauer lt. Wikipedia:
# 29,53 Tage (29 Tage, 12 Stunden und 43 Minuten)
mondphase () {
# dt. Format dd mm yy
tag=$1
monat=$2
jahr=$3
datum=19$jahr/$monat/$tag
# Datum in Sekunden seit 1.1.1970, am 26.8.2013 war Vollmond
# 2013/08/26: erste Arbeiten am Script
# letzter Tag der 7 Tage Vollmond, in Zukunft liegend bzw. nach
voll=$(date -d 2013/12/16 +%s)
tag=$(date -d $datum +"%s")
# echo $((heute-tag))
delta=$((voll-tag))
# $((12/3*2)) ist $(((12/4)*2)), nicht $((12/(4*3)))
# 3600*24 sind die 60*60s * 24h also ein Tag in Sekunden.
# 29.53 ist die Dauer einer Mondphase in Tagen (s.o.)
# statt a/(3600 *b*29.53) zu rechnen kann ich die Nachkommastellen verschieben
# zu a/(36.00*b*2953 )
# Ganze Mondphasen seit Geburtstag:
mondphasen=$((delta/(36*24*2953)))
# 592
# Rest der nicht in ganzen Mondphasen aufgeht:
rest=$(((delta-mondphasen*(36*24*2953))/(24*3600)))
# 4 Phasen: Vollmond, abnehmend, Neumond, zunehmend
# 29,53 /4 ~= 30/4 = 15/2 = 7.5
# Die erste Phase ist aber schon halb vorbei und dauert nur noch 3.75 Tage
# 3.75 + 7.5 = 11.25 , + 7.5 = 18.75, + 7.5 = 26.25 ... 29.5
phase=$(((rest+4)/7))
phasen=(Vollmond zunehmend Neumond abnehmend Vollmond2)
# echo $tag.$monat.19$jahr Rest $rest ${phasen[phase]}
echo ${phasen[phase]}
}
echo Tag Monat Jahr Länge Mondphase
for n in {4..30}
do
line=$(sed -n ${n}p geburtstage.lst)
d=${line:0:2}
m=${line:2:2}
y=${line:4:2}
l=${line:7:3}
p=$(mondphase $d $m $y)
echo -e $p "\t"$d.$m.19$y $l
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment