Как выйти из `whiptail --gauge`?

У меня есть небольшой пример сценария:

for i in {1..100}; do
   echo $i
   sleep 0.1
done | whiptail --gauge "Doing something" 10 50 0

Он работает как надо, отображает движущийся индикатор выполнения и завершает работу, когда он достигает 100.

Используя тот же цикл for без привязки к whiptail, я могу остановить его с помощью Ctrl + C . Но как я могу в интерактивном режиме прервать процессную трубу, чтобы выполнить биптейл, поскольку Ctrl + C здесь не работает?

2
задан 24 April 2019 в 14:15

2 ответа

У меня есть попытка другой optiuons с whiptail, и кажется, что единственное решение состоит в том, чтобы выполнить его для каждого процента. Ctrl-C работает.
Изменение ТЕРМИНА необходимо, чтобы заставить его работать в gnome-terminal, то же для xterm (протестировал его), и вероятно другие терминалы
Протестированный в текстовой консоли (tty) - это уже имеет TERM=linux
whiptail текст терминала восстановлений к тому же как перед выполнением, но блоками TERM=linux эта функция.

#!/usr/bin/env bash

for i in {1..100}; do
   sleep 0.1
   export TERM=linux
   echo $i | whiptail --gauge "Doing something" 10 50 $i
done

Если необходимо произвести некоторую информацию о прогрессе, лучше, чтобы сделать это внутри whiptail текстовые параметры

2
ответ дан 24 April 2019 в 14:15

Для выхода из программы, можно попробовать что-то как следующее:

   for i in {1..100}; do
   echo $i
   sleep 0.1
   read -t 0.1 -N 1 input
   if [[ $input == 'q' ]] || [[ $input == "Q" ]];then
        break;
   fi
done | whiptail --gauge "Doing something. press 'q' or 'Q' to exit" 10 50 0

Здесь сценарий будет ожидать ввода данных пользователем 'q' или 'Q' для выхода.

0
ответ дан 2 December 2019 в 03:28

Другие вопросы по тегам:

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