使用对话框时如何“不清除”屏幕?

使用对话框时如何“不清除”屏幕?

dialog是一个很棒的工具,但我找不到在 bash 脚本中使用它的方法,因为它不会事先清除屏幕。

我知道如果我--keep-window结合使用这是可能的--and-widget,但在这种情况下,我无法在显示下一个对话框之前处理用户输入。

是否可以启动dialog命令并让它绘制窗口而不清除屏幕?有什么我不知道的技巧吗?

编辑(澄清):

这是我想要实现的简化示例脚本(不,我不是想在 bash 中编写游戏;)):第一个对话框中的用户输入对脚本很重要,并保存在变量中selection

然后第二个对话框应该显示在第一个对话框的前面。但是调用dialog会自动清除屏幕(因此第一个对话框消失了)


#!/bin/bash

# selection will contain the "tag" of the option selected, either 1, 2 or 3
selection=$(dialog --output-fd 1 --menu "Which cup will you choose ?" 0 0 0 1 "A simple wooden bowl" 2 "A golden jeweled cup" 3 "A plastic goblet")

# and now a second dialog that I'd like to show in front of the first one without clearing the screen

case $selection in
        1)
        dialog --msgbox "You have chosen ... wisely." 0 0
        ;;
        2)
        dialog --msgbox "You chose ... poorly" 0 0
        ;;
        3)
        dialog --msgbox "You must be kidding right ?" 0 0
        ;;
        *)
        dialog --msgbox "You have to choose one !" 0 0
        ;;
esac

答案1

文档 ( man dialog) 提供了使用辅助屏幕的功能,在退出时恢复原始屏幕的内容。这是你需要的吗?

dialog --keep-tite --msgbox 'Boo!' 0 0

你的评论您澄清您想要的是第二个(可能是后续的)框覆盖在第一个框上。文档中也对此进行了描述 - 并附有示例。这是我对主题的变体:

dialog --begin 2 2 --msgbox 'Boo!' 0 0 --and-widget --begin 4 4 --msgbox "That's all folks" 0 0

相关内容