Name="Countdown in Shell-Skript"
Stich="Coutndown Shell date expr"
Zeit="Son Jun 2 10:59:49 MEST 2002"
Kurz="Dieser Artikel stellt einen Countdown, geschrieben in Shell-Skript, vor."
Lang="
`exCodes So oder \ä\;hnlich k\ö\;nnte der Countdown aussehen`
Heute ist der 2.Juni.2002 (11:02:13 Uhr).
Bis zum Schuljahresende sind es nur noch
5097693 Sekunden!
84961:33 Minuten:Sekunden!
1416:1:33 Stunden:Minuten:Sekunden!
1416:93 Stunden:Sekunden!
59:93 Tage:Sekunden!
59:1:33 Tage:Minuten:Sekunden!
59:0:1:33 Tage:Stunden:Minuten:Sekunden!
8:3:0:1:33 Wochen:Tage:Stunden:Minuten:Sekunden!
`exCodee`
Es gibt Countdowns für Linux ja wie Sand am Meer, aber dieser ist der
Kleinste: Gerade mal 34 Zeilen Shell-Skript. Das Skript kommt ohne Perl
und sonstige Bibliotheken aus, und eignet sich daher auch gut für einen
alten Laptop mit einem Mini-Linux.
Mit dem folgenden Eintrag in der Crontab bekommt man dann die Restzeit gleich
per E-Mail:
`exCodes crontab`
42 10 * * * /pfad/zum/countdown.sh "31 July 2002 11:03:46" "zum Schuljahresende"
`exCodee`
Das Skript, Download:
`exCodes countdown.sh`
#!/bin/bash
destin="\$2"
target=\`date +%s --date="\$1"\`
source=\`date +%s\`
diff=\`expr \$target - \$source\`
echo Heute ist der \`date +%e.%B.%Y\ \(%r\ Uhr\)\`.
echo
echo
echo Bis \$destin sind es nur noch
echo
seconds=\$diff
min_sec=\`expr \$diff / 60\`:\`expr \$diff % 60\`
ho_mi_s=\`expr \$diff / 3600\`:\`expr \( \$diff % 3600 \) / 60\`:\`expr \$diff % 60\`
hou_sec=\`expr \$diff / 3600\`:\`expr \$diff % 3600\`
day_sec=\`expr \$diff / 86400\`:\`expr \$diff % 86400\`
da_mi_s=\`expr \$diff / 86400\`:\`expr \( \$diff % 86400 \) / 60\`:\`expr \$diff % 60\`
d_h_m_s=\`expr \$diff / 86400\`:\`expr \( \$diff % 86400 \) / 3600\`:\`expr \( \( \$diff % 86400 \) % 3600 \) / 60\`:\`expr \$diff % 60\`
wdh_m_s=\`expr \$diff / 86400 / 7\`:\`expr \( \$diff / 86400 \) % 7\`:\`expr \( \$diff % 86400 \) / 3600\`:\`expr \( \$diff % 3600 \) / 60\`:\`expr \$diff % 60\`
echo \$diff Sekunden\!
echo \$min_sec Minuten:Sekunden\!
echo \$ho_mi_s Stunden:Minuten:Sekunden\!
echo \$hou_sec Stunden:Sekunden\!
echo \$day_sec Tage:Sekunden\!
echo \$da_mi_s Tage:Minuten:Sekunden\!
echo \$d_h_m_s Tage:Stunden:Minuten:Sekunden\!
echo \$wdh_m_s Wochen:Tage:Stunden:Minuten:Sekunden\!
`exCodee`
Das Skript erwartet als ersten Parameter das Datum in einer für
das Kommando $esCodes date $esCodee verträglichen From (zum Beispiel
"31 July 2002 11:03:46") und als zweiten Paremeter den Namen
des Ereignisses samt Artikel (also zum Beispiel "zum
Schuljahresende").
"
case $1 in
Name) echo $Name; exit;;
Stich) echo $Stich; exit;;
Zeit) echo $Zeit; exit;;
Kurz) echo $Kurz; exit;;
Lang) echo $Lang; exit;;
esac
# if [ "$1" = "Name" ]; then echo $Name; fi
mself_vA="txt/0052.txt txt/0054.txt txt/0055.txt txt/0059.txt txt/0085.txt"