ダイアログボックスを使用するときに画面を「消去しない」方法は何ですか?

ダイアログボックスを使用するときに画面を「消去しない」方法は何ですか?

dialogは素晴らしいツールですが、あらかじめ画面を消去しないため、bashスクリプトで使用する方法が見つかりません。

組み合わせを使用すると、--keep-windowこれが可能であることがわかりますが、--and-widgetこの場合、次のダイアログボックスを表示する前にユーザー入力を処理することはできません。

dialogコマンドを起動して画面を消去せずにウィンドウを描画することはできますか?私が知らないトリックがあるのでしょうか?

編集する(明らかにする):

これは私が達成したい単純なサンプルスクリプトです(いいえ、私はbashでゲームを書くつもりはありません)。最初のダイアログボックスのユーザー入力はスクリプトにとって重要であり、変数に保存されます。selection

次に、2番目のダイアログボックスを最初のダイアログボックスの前に表示する必要があります。ただし、呼び出すと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

存在するあなたのコメントあなたが望むのは、最初のボックスをオーバーレイする2番目の(おそらく後続の)ボックスであることを明らかにします。これは、例とともにドキュメントにも記載されています。トピックへの私のバリエーションは次のとおりです。

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

関連情報