Страница 1 из 1

индикация меняющихся значений в bash

Добавлено: 11 дек 2015, 14:20
nezabudka
Занимаясь разбором тулзы tput я нарыла в англоязычной литературе
такой вот скриптик выводящий меняющуюся последовательность
То есть я привыкла к выводу всего ряда последовательности в
выполняемом скрипте. А здесь предыдущий результат затирается новым
но в тоже время оставляет индикатор вывода в неизменном виде "Count:"
Меняем данные и имя индикатора и получаем мониторинг нужного процесса.

Код: Выделить всё

#!/bin/bash
#filename: count.sh
echo -n Count:
tput sc
count=0;
while true; do
    if [ $count -lt 10 ]; then
        let count++
        sleep 1
        tput rc
        tput ed
        echo -n $count
    else echo; exit 0;
    fi
done
Или вот так

Код: Выделить всё

#!/usr/bin/env bash
echo -n "Count: "
tput sc
for (( i=1; i<=10; i++ )); do
	sleep 1
	tput rc
	echo -n $i
	tput ed
done
echo; exit 0
Интересно что во втором скрипте затирание строки
пришлось перенести за команду echo

Re: индикация меняющихся значений

Добавлено: 11 дек 2015, 15:35
nezabudka
Я тут подумала, правильней будет вот так

Код: Выделить всё

#!/usr/bin/env bash
echo -n "Count: "
tput sc #сохраняем позицию курсора
for (( i=1; i<=10; i++ )); do
	tput rc #преводим курсор на сохраненную позицию
	tput ed #удаляем от курсора до конца строки
	echo -n $i
	sleep 1
done
echo; exit 0
Смена значений будет проходить максимально быстро а индикация
продлится наиболее полное время