2011-04-11 6 views
3

쉘 스크립트에서 AppleScript를 실행할 수 있어야합니다. 대화 모드 등을 지원하기 위해 "AppleScript Runner"를 대화 형 모드로 사용하고 있습니다. 작동하고 있지만 AppleScript 러너 응용 프로그램의 종료 상태를 다시 쉘로 가져와 스크립트에 오류가 있는지 확인할 수 있어야합니다. 여기 AppleScript Runner 종료 상태가 쉘 스크립트로 다시 전달되었습니다.

내 쉘 스크립트입니다

output=$(/usr/bin/osascript << EOT 
tell application "AppleScript Runner" 
do script "somescript.scpt" 
end 
EOT) 

status=$? 

여기 내 변수 $ 상태는 (실제로이 성공적으로 실행 somescript.scpt 여부 0이됩니다)을 osascript 명령의 종료 상태와 종료되고, 앱 AppleScript Runner의 종료 상태가 아닙니다.

나는 이것을 어떻게 수행 할 수 있는지 알고 있습니까?

감사합니다.

답변

2

-e 플래그는 stderr에 오류를 인쇄하며 기본값입니다. 그래서 stderr를 읽을 필요가 있습니다. 당신이 익숙하지 않은 경우

이 대답은 당신을 도울 수 있습니다

bash variable capture stderr and stdout separately or get exit value

편집 : 추가 샘플 코드를.

error=`osascript -e 'tell app "Finder" to adtivate' 2>&1` 
echo $error 

위의 시스템에서 오류 메시지를 캡처합니다.

+0

나는 stdout에서 오류 메시지를 받고있는 것 같지만이 설정에서는 stderr가 아닙니다. 나는 쉘 스크립트에서도 "set -e"를 사용했다. – krill

+0

난 그냥 내 시스템에 짧은 스크립트를 테스트하고 stderr 갈거야. – Clark