Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов.
8(977)608-78-62 adm@nixm.ru

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

Ответить
Аватара пользователя
nezabudka
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

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

Сообщение 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
Последний раз редактировалось nezabudka 12 дек 2015, 13:54, всего редактировалось 1 раз.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Аватара пользователя
nezabudka
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

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

Сообщение 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
Смена значений будет проходить максимально быстро а индикация
продлится наиболее полное время
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Ответить

Вернуться в «Bash»