我有一个简单的shell脚本,在它中,我使用对话框,即Linux程序,为基本的开关-用例结构创建一个动态图形菜单。我使用以下参数启动该程序:
CHOICE=$(dialog --clear \
--backtitle "$BACKTITLE" \
--title "$TITLE" \
--menu "$MENU" \
$HEIGHT $WIDTH $CHOICE_HEIGHT \
"${OPTIONS[@]}" \
2>&1 >/dev/tty)一旦我选择了开关结构的任何选项,对话框就会退出.我想在循环中运行它,只有在我按下“取消”按钮时,它才会退出。如果我将整个脚本放入一个while true-loop中,那么一旦选择Cancel,它就不会退出。
如何通过选择“取消”来创建一个可以退出的循环?关于这件事,最有意义的方法是什么?Cancel是否返回一些我可以用作循环参数的值,以便它可以被破坏?
发布于 2019-11-18 00:01:37
来自man dialog
如果按下“取消”按钮(或
),则不会写入任何文本;对话框将立即退出
是的,在你的情况下你可以做一个循环,你会测试是否是空的。
一个例子
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
donehttps://stackoverflow.com/questions/58905412
复制相似问题