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

Числовая сортировка файлов, включая отрицательные числа
Ctrl + C, чтобы разорвать бесконечный цикл, а затем сделать что-то вне цикла в сценарии bash без выхода?
Bash-скрипт для резервного копирования и восстановления структуры каталогов
Как я могу выполнить команду и немедленно выйти из терминала?
"- bash: ls: команда не найдена " ошибка в терминале на Mac. Как это исправить?
как git добавил себя в путь на OSX 10.6? Это не в bashrc или профиль? [дубликат]
Экранирование символов для точного условия grep в сценарии Bash
Автоматически генерировать имя файла с помощью bash
cronjob Открытие, то сразу закрытие туннеля ssh
Ошибка шпатлевки: операция / bin / bash не разрешена при подключении к Cygwin sshd
Объяснение флага-W для rm
запуск "crontab-e" отказано в разрешении?
grep: выводить конкретную строку после матча
Использование wget для рекурсивного обхода сайта и загрузки изображений
Почему я не могу выделить текст в эмуляторе терминала linux с помощью клавиш shift+Стрелка?

Таймер работает под скриптом bash в диалоговом окне

следующий сценарий bash является примером использования команды dialog. Этот сценарий запускает индикатор выполнения (и отображает обновление процесса). В диалоговом окне отсутствует времени - это показывает, сколько времени индикатор был запущен, каждую секунду, до конца.

Я не уверен, что диалог позволяет это, поэтому я спрашиваю, Можно ли печатать часы внутри диалогового окна?

Если нет, то какие другие альтернативы? (для например, часы, которые запускаются вне диалогового окна)

  #!/bin/bash
  declare PACKAGES=("/etc/crontab"  "/etc/dmtab"  "/etc/fstab"  "/etc/inittab"  "/etc/mtab")
     NUM_PACKAGES=${#PACKAGES[*]} # no. of packages to update (#packages in the array $PACKAGES)
  step=$((100/$NUM_PACKAGES))  # progress bar step
   cur_file_idx=0
   counter=0
 DEST=${HOME}
    (
    # infinite while loop
    while :
  do
  cat <<EOF
  XXX
 $counter
   $counter% upgraded

   $COMMAND
   XXX
   EOF
       COMMAND="cp ${PACKAGES[$cur_file_idx]} $DEST &>/dev/null" # sets/updates command to exec.
      [[ $NUM_PACKAGES -lt $cur_file_idx ]] && $COMMAND # executes command

   (( cur_file_idx+=1 )) # increase counter
     (( counter+=step ))
   [ $counter -gt 100 ] && break  # break when reach the 100% (or greater
                               # since Bash only does integer arithmetic)
   sleep 10 # delay it a specified amount of time i.e. 1 sec
 done
     ) |
      dialog --title "File upgrade" --gauge "Please wait..." 10 70 0

обновление: Я также нашел код таймера, и я хочу объединить этот код в диалоговой строке-как это сделать?

скрипт таймера (код) :

 date1=`  date   +%s`; 
   while true; do 
   echo -ne "$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)r"; 
   done
5
задан Doktoro Reichard
источник

1 ответов

действительно, было бы неплохо, если бы диалог был --show-elapsed option или что-то еще, в настоящее время это не просто сделать.

дисплей часть не слишком трудно: вы можете (ab) использовать --title возможность отображения затраченного времени. Вы даже можете заставить его отображаться ниже датчика, добавив больше \n (и изменение размера коробки).

enter image description here

сложнее заставить его отображать каждую секунду, даже если между обновлениями статуса 50s. Вот решение с помощью read -t тайм-аут вариант:

#!/bin/bash

show_dialog()
{
    p=0             # percentage
    date1=`date +%s`
    while [ "$p" != 100 ]; do
        read -t 1 tmp && p=$tmp
        elapsed="$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)"
        echo $p | dialog --title "File upgrade" --gauge "Please wait...\n\n\n\n$elapsed" 10 70 0
    done
}

task()              # fake task
{ for p in `seq 1 100`; do echo $p; sleep 2; done; }

task | show_dialog
1
отвечен lemonsqueeze 2014-10-15 22:07:13
источник

Другие вопросы bash dialog linux shell-script