我有一个简单的shell脚本,并且在其中使用Linux程序 Dialog 为基本的开关盒结构制作动态图形菜单。我使用以下参数启动程序:
CHOICE=$(dialog --clear \
--backtitle "$BACKTITLE" \
--title "$TITLE" \
--menu "$MENU" \
$HEIGHT $WIDTH $CHOICE_HEIGHT \
"${OPTIONS[@]}" \
2>&1 >/dev/tty)
一旦选择了开关结构的任何选项,对话框将退出。我想在循环中运行它,使其仅在按下 cancel 按钮时退出。如果将整个脚本放在一个while true
循环中,则一旦选择 Cancel ,它就不会退出。
如何通过选择取消退出一个可以退出的循环?进行此操作最有意义的方法是什么? 取消是否会返回一些可用作循环参数的值,以便可以将其破坏?
答案 0 :(得分:0)
来自man dialog
如果按下“取消”按钮(或ESC),则不会写入任何文本;对话框立即退出
是的,您可以根据情况进行循环,然后测试是否为空。
一个例子
CHOICE="foobar" ;
while [ -n "$CHOICE" ] ;
do
CHOICE=$(dialog --clear \
--backtitle "$BACKTITLE" \
--title "$TITLE" \
--menu "$MENU" \
$HEIGHT $WIDTH $CHOICE_HEIGHT \
"${OPTIONS[@]}" \
2>&1 >/dev/tty)
if [ -n "$CHOICE" ]
then
reset
echo "${CHOICE}"
sleep 5
fi
done