«Диалоговое окно» индикатора выполнения для отображения прогресса на основе выполнения команды из функции

Используйте ниже одну команду лайнера для перечисления команды пакета:

 rpm -ql systemd | grep -w 'bin\|sbin' | awk -F '/' '{print $NF}' | xargs man head | grep ' - ' | grep -vi 'No manual' 2> /dev/null 
1
04.12.2021, 12:45
1 ответ

Общий синтаксис дляdialog --gauge

В этом демонстрационном сценарии показано, как сделать так, чтобы в диалоговом окне отображался прогресс.

#!/bin/bash

( echo 10;sleep 1;echo 50;sleep 1; echo 90;sleep 1;echo 100;sleep 1 ) | dialog --gauge 'text' 10 60 0
echo '##########'
i=0; while [ $i -le 100 ];do echo "$i";echo "#comment $i";i=$((i+10));sleep 1;done
echo '##########'
i=0; while [ $i -le 100 ];do echo "$i";echo "#comment $i";i=$((i+10));sleep 1;done| dialog --gauge 'text' 10 60 0
  • Используется вывод с номерами 0 -100.
  • Другие выходные данные могут иметь префикс #, чтобы их можно было рассматривать как комментарии, и это не вызовет путаницы dialog. Это может работать даже с не -числами (текстовыми строками )без префикса с #, но могут быть сюрпризы.

Если у вас есть другой вывод, вы должны перехватить его, обработать и передать только соответствующие значения от 0 -100 до dialog.

Редактировать :известное количество выходных строк

Следующий скрипт предполагает известное количество строк вывода(в этом примере 5 )до завершения и использует функцию actorдля подачиdialog:

#!/bin/bash

expected_outputs=5
ii=0

function two() {
   echo "test2-1"; sleep 1;
   echo "test2-2"; sleep 1;
   echo "test2-3"; sleep 1;
   echo "test2-4"; sleep 1;
   echo "test2-5"; sleep 1;
}

function actor () {
while read ans
do
    echo "# $ans"
    ii=$((ii+1))
    echo $((ii*100/expected_outputs))
done
}

# main

two | actor

two | actor | dialog --title "Gauge" --gauge "Wait please..." 10 60 0

Редактировать 2:zenity --progress

В графической среде рабочего стола вы можете использовать следующую соответствующую командную строку сzenity:

two | actor | zenity --progress --title "Gauge" --text="string" --percentage=0 --auto-close --width=300
1
04.12.2021, 13:48

Теги

Похожие вопросы