Я предпочитаю использовать диалог с параметром - gauge . Очень часто используется в установочных пакетах .deb и других элементах базовой конфигурации многих дистрибутивов. Так что вам не нужно изобретать велосипед ... снова
Просто установите значение int от 1 до 100 @stdin. Один простой и глупый пример:
for a in {1..100}; do sleep .1s; echo $a| dialog --gauge "waiting" 7 30; done
У меня есть этот файл / bin / Wait (с chmod u + x perms) для целей приготовления: P
#!/bin/bash
INIT=`/bin/date +%s`
NOW=$INIT
FUTURE=`/bin/date -d "$1" +%s`
[ $FUTURE -a $FUTURE -eq $FUTURE ] || exit
DIFF=`echo "$FUTURE - $INIT"|bc -l`
while [ $INIT -le $FUTURE -a $NOW -lt $FUTURE ]; do
NOW=`/bin/date +%s`
STEP=`echo "$NOW - $INIT"|bc -l`
SLEFT=`echo "$FUTURE - $NOW"|bc -l`
MLEFT=`echo "scale=2;$SLEFT/60"|bc -l`
TEXT="$SLEFT seconds left ($MLEFT minutes)";
TITLE="Waiting $1: $2"
sleep 1s
PTG=`echo "scale=0;$STEP * 100 / $DIFF"|bc -l`
echo $PTG| dialog --title "$TITLE" --gauge "$TEXT" 7 72
done
if [ "$2" == "" ]; then msg="Espera terminada: $1";audio="Listo";
else msg=$2;audio=$2;fi
/usr/bin/notify-send --icon=stock_appointment-reminder-excl "$msg"
espeak -v spanish "$audio"
Так что я могу поставить:
Wait "34 min" "warm up the oven"
или
Wait "dec 31" "happy new year"
Шаблон декоратора используется в классах Stream:
Подклассы украшают Stream, потому что они наследуются от него, и они также содержат экземпляр Stream, который настроен в конструкторе.
Очевидным примером является шаблон Итератор . с использованием класса IEnumerator в платформе:
Итераторы в .NET Framework: названы "счетчиками" и представлены с помощью интерфейса IEnumerator. IEnumerator предоставляет MoveNext () метод, который переходит к следующему элемент и указывает, коллекции достигнуто; а Текущее свойство, чтобы получить значение элемента, на который в данный момент указывает в; и необязательный метод Reset (), чтобы перемотать счетчик обратно на его исходное положение. Перечислитель изначально указывает на особое значение перед первым элементом, поэтому вызов MoveNext () требуется для начала итерация.
Шаблон адаптера в DataAdapter , используемый с различными источниками данных, такими как OleDB, Sql и Oracle.
Это художественное произведение кажется хорошим: - http://msdn.microsoft.com/en-us/magazine/cc188707.aspx#S5