Создайте индикатор выполнения в подходах bash, чтобы получить индикатор выполнения, поэтому я сосредоточусь на том, как здесь подделать часть.
for i in {1..100}; do sleep 2; echo $i; done | dialog --gauge 'Running...' 6 60 0
Этот цикл for петли1 над номерами от одной до сотни, а echo - к каждой 2 секундам, выход затем передается по каналу dialog, который показывает номер в качестве прогресса на индикатор выполнения. Этот подход работает и для whiptail и zenity --progress (GUI). Вывод dialog выглядит так: цветной индикатор выполнения с использованием «curses» в текстовом режиме:
Создает индикатор выполнения в bash
for i in {1..100}; do sleep 2; echo; done | pv -pWs100 >/dev/null
Этот цикл очень похож, просто он печатает только новую строку (= 1 байт данных) каждые 2 секунд, тогда pv следует ожидать точно 100 ] байтов данных и показать полосу выхода p. В терминальном окне с шириной 80 символов вывод выглядит следующим образом:
[===============> ] 22%
С помощью простого цикла вы также можете создать свой собственный индикатор выполнения , Вот несколько примеров, которые просто печатают 100 # в одной строке, одна за 2 секунды:
# number signs only
$ for i in {1..100}; do sleep 2; echo -n \#; done; echo
####################################################################################################
# with progress in % on the right
$ for i in {1..100}; do sleep 2; printf "%0.s#" $(seq 1 $i); printf "%0.s " $(seq $i 100); printf "%3d%%\r" "$i"; done; echo
###################################################### 54%
# with progress in % on the left
$ for i in {1..100}; do sleep 2; printf "%3d%% " "$i"; printf "%0.s#" $(seq 1 $i); printf "%0.s " $(seq $i 100); printf "\r"; done; echo
39% #######################################
1