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