bash 스크립트에서 대화 기반 의사 결정이 가능합니까?

bash 스크립트에서 대화 기반 의사 결정이 가능합니까?

일부 GUI 문제에 따라 다양한 작업을 수행하는 작은 bash 스크립트를 작성하려고 합니다.

제가 지금 있는 곳은 다음과 같습니다.

[Timomey@timomeyswetab ~]$ TEST=`zenity --question`; echo test=$TEST
test=
[Timomey@timomeyswetab ~]$ TEST=`zenity --question`; echo test=$TEST
test=
[Timomey@timomeyswetab ~]$ 

문제는 예상대로 작동하지 않는다는 것입니다. TEST 변수에 약간의 차이가 있어야 하는데 전혀 보이지 않습니다. 내가 뭘 잘못했나요?

감사해요

답변1

zenity선택 결과는 표준 출력에 기록되지 않습니다. 명령줄에서 실행하여 직접 시도해 보세요.

$ zenity --question
$

보시다시피 아무것도 표시되지 않으므로 TEST변수가 비어 있습니다.

대신 zenity반환된 값 --question은 종료 상태입니다. 이는 $?내부 변수를 통해 (bash에서) 볼 수 있습니다.

$ zenity --question

"아니요" 버튼을 선택합니다:

$ echo $?
$ 1

매뉴얼 페이지에 명시된 대로 0은 "예"를 의미하고, 1은 "아니오"를 의미하며, 5는 명령 시간이 초과되었음을 의미합니다.

따라서 귀하의 명령은 다음과 같아야 합니다:

$ zenity --question; echo test=$?
$ test=1

명령 마다 zenity동작이 다릅니다. 매뉴얼 페이지에서 설명하는 것처럼 --entry명령은 출력을 std-out으로 보냅니다.

$ zenity --entry
$ Test 1..2..3..

따라서 테스트에서는 이 특정 명령을 사용합니다.

관련 정보