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"