bash 쉘 스크립트를 통해 사용자에게 옵션 메뉴를 제공하고 싶습니다. 그런 다음 나중에 나중에 사용할 수 있도록 선택 항목을 환경 변수에 저장해야 합니다.
명령줄에서 실행하는 경우:
dialog \
--backtitle "Make a choice" \
--menu "Take a pick" \
10 40 3 \
choice1 "First choice" \
choice2 "Second choice"
그러면 모든 것이 잘 작동합니다. 원하는 메뉴를 얻 choice1
거나 choice2
다시 인쇄됩니다. 그러나 다음을 실행하면:
SELECTION=$( dialog \
--backtitle "Make a choice" \
--menu "Take a pick" \
10 40 3 \
choice1 "First choice" \
choice2 "Second choice" \
)
그러면 더 이상 내가 원하는 대로 작동하지 않습니다.
- 메뉴가 표시되지 않지만 (내가 아는 한)
dialog
Enter 키를 누르면 종료됩니다. - Enter를 눌러 비표시 메뉴를 종료하면 선택한 레이블이 $SELECTION에 저장되지 않고 터미널에 나타납니다.
2>&1
stderr로 인쇄되는 경우를 대비하여 stderr를 stdout으로 리디렉션하는 기능을 추가해 보았습니다 . 지금 유일하게 확실한 영향은아무것도 없다명령 대체 표현식에서 반환또는터미널로 인쇄합니다.
내 시스템에서는 1.1-20120215 dialog
입니다 cdialog
. 매뉴얼 dialog
페이지에는 --menu
이것을 언급되어 있습니다.종료 시 선택한 메뉴 항목의 레이블이 대화 상자의 출력에 인쇄됩니다.이것은 위와 비슷한 것과 작동해야 할 것 같지만 나에게는 작동하지 않습니다.
제 생각에는사용자가 사용 가능한 옵션 중에서 선택할 수 있도록 표시되는 메뉴입니다. 사용자가 수락하면 선택한 옵션(예: choice2
)의 레이블이 환경 변수 $SELECTION에 저장됩니다. 사용자가 취소하는 경우 명확한 표시가 있어야 합니다(이상적으로 $SELECTION은 정의되지 않았거나 길이가 0인 문자열임).
어떻게 해야 하나요?내가 놓치고 있는 퍼즐 조각은 무엇인가?
dialog
선택할 수 있는 멋진 메뉴를 제공하고 이상적으로는 제안된 소프트웨어가 너무 이국적이지 않은 한 대안을 제안하는 솔루션 도 허용됩니다( main
Debian Stable 저장소에서 가용성이 필요함).
답변1
다음 --stdout
옵션을 사용해 보세요.
$ SELECTION=$( dialog --stdout \
--backtitle "Make a choice" \
--menu "Take a pick" \
10 40 3 \
choice1 "First choice" \
choice2 "Second choice" \
)