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