如何退出‘whiptail --gauge’?

如何退出‘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我如何以交互方式终止管道化到 whiptail 的进程?CtrlC

答案1

我尝试了whiptail的不同选项,似乎唯一的解决方案是针对每个百分比执行它。-Ctrl正在C工作。
需要更改TERM才能使其在中工作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

要退出该程序,您可以尝试以下步骤:

   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”来退出。

相关内容