--------------------------------Linux Guide---------------------------------- by Ingo Blechschmidt (c) 2002 ----------------------------------------------------------------------------- ------------------------- Countdown in Shell-Skript ------------------------- Son Jun 2 10:59:49 MEST 2002 ------------------------- Coutndown Shell date expr ----------------------------------------------------------------------------- Dieser Artikel stellt einen Countdown, geschrieben in Shell-Skript, vor. ----------------------------------------------------------------------------- --------CODE--------: 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! --------/CODE-------- 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: --------CODE--------: crontab 42 10 * * * /pfad/zum/countdown.sh "31 July 2002 11:03:46" "zum Schuljahresende" --------/CODE-------- Das Skript, siehe <"down/countdown.sh">Download: --------CODE--------: 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\! --------/CODE-------- Das Skript erwartet als ersten Parameter das Datum in einer für das Kommando date 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"). ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- This document is distributed under the terms of the GNU Free Documentation License.