현재 bash에서 nemo 액션 스크립트를 작성 중이며 사용자로부터 입력을 받을 수 있는 방법이 필요합니다.
어떻게? 액션 스크립트를 실행할 때 터미널이 표시되지 않습니다.
사용자 입력을 요청하기 위해 GUI에서 쿼리 창을 팝업하는 방법이 있습니까?
답변1
Zenity는 훌륭한 도구입니다.
user_input=$(zenity --entry)
사용자가 GUI 창에 입력하는 모든 것은 사용자가 취소 키를 누르지 않는 한 변수에 할당되며 user_input
, 이 경우 종료 코드는 0이 아닙니다.
user_input=$(zenity --entry)
if [ $? = 0 ]; then
echo "User has pressed OK. The input was:"
echo "$user_input"
else
echo "User has pressed cancel"
fi
Gxmessage는 매우 유사한 구문을 사용하는 대안입니다.
user_input=$(gxmessage --entry "Enter your input")
자세한 내용은 다음을 참조하세요.man zenity
그리고man gxmessage
.
답변2
- 쉘에 머물고 싶다면 이것을 사용하십시오
dialog
(거의 모든 배포판에는 기본적으로 설치되어 있습니다).
사용하기 전에 맨페이지를 읽어서 원하는 작업을 정확하게 수행하도록 구성할 수 있습니다. 작은 예:
dialog --inputbox "Please input something" 0 0 2> /tmp/file_that_will_contain_your_input
- X11 창을 표시하려면 xdialog를 확인하세요. 그러나 나는 셸에 머무르는 것을 권장합니다.
X11 부분을 사용하고 일부는 콘솔을 사용하는 스크립트를 작성하면 문제가 발생하지만 아무런 이점도 얻지 못합니다. 호환성상의 이유로
의 구문은xdialog
의 구문과 거의 동일합니다.dialog
따라서 위의 예 앞에 놓으면x
정확히 동일한 작업을 수행하지만 X11 창을 사용합니다. 자세한 내용은 맨페이지를 다시 확인하세요.