일부 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..
따라서 테스트에서는 이 특정 명령을 사용합니다.