Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: Countdown w bashu  (Przeczytany 1837 razy)

Syster

  • Gość
Countdown w bashu
« dnia: 2009-04-25, 13:35:17 »
Witajcie!
Poszukuje jakieś metody na odliczanie do danej daty w gnome. Niestety żadnego appletu nie znalazłem jedynie prawie dobrze działający skrypt w bashu:
#!/bin/bash

file=`ls ~/bin/countdown.txt`
usage="Usage: $0 #get time until destination\\n \\
$0 --add time name #assign time to the name\\n \\
$0 --reset [time] #reset clock, to time, if given\\n \\
See man date(1) for time add/reset format."

now=`date +%s`

if [ "$1" = "--add" ] ; then
if [ "$#" -lt "3" ] ; then
echo "Need more arguments!"
echo $usage
exit 1
fi
echo -n "$3:"`date -d "$2" +%s`"::" >> $file
exit
elif [ "$1" = "--reset" ] ; then
echo "" > $file
exit
fi

records=`cat $file`
numrecords=`cat $file | grep "::" | wc -l`
while [ $numrecords -gt 0 ]
do

destfull=`echo $records | nawk -F:: '{print $1}'`
destname=`echo $destfull | nawk -F: '{print $1}'`
dest=`echo $destfull | nawk -F: '{print $2}'`

interval=`expr $dest - $now`
seconds=`expr $interval % 60`
interval=`expr $interval - $seconds`
minutes=`expr $interval % 3600 / 60`
interval=`expr $interval - $minutes`
hours=`expr $interval % 86400 / 3600`
interval=`expr $interval - $hours`
days=`expr $interval % 604800 / 86400`
interval=`expr $interval - $hours`
weeks=`expr $interval / 604800`
echo "$destname: "$weeks" weeks, "$days" days, "$hours" hours, "$minutes" minutes, "$seconds" seconds"
records="${records#$destfull"::"}"
numrecords=`expr $numrecords - 1`
done
Problem w tym że jak dodam więcej niż jeden wpis to skrypt wyświetla tylko jeden pierwszy dodany wpis:(
Czy ktoś byłby w stanie go przerobić??