stdout을 환경 변수로 리디렉션할 수 있다는 것을 알고 있습니다. 예:
retcode=$(/usr/bin/osascript -e 'do shell script ... with administrator privileges')
하지만 stderr 출력을 환경 변수로 어떻게 리디렉션합니까(이 예에서는 관리자 자격 증명 대화 상자를 취소하는 사용자를 감지하기 위해)?
답변1
이는 stdout과 stderr을 하나의 변수로 리디렉션하는 가장 간단한 방법입니다.
output=$(/usr/bin/osascript -e 'do shell script ... with administrator privileges' 2>&1)
retcode=$?
stdout과 stderr을 별도로 포착하려는 경우에는 더욱 복잡해집니다. 유일한 간단한 방법은 stdout/stderr을 별도의 파일로 리디렉션하는 것입니다.
/usr/bin/osascript -e 'do shell script ... with administrator privileges' >/tmp/$$.stdout 2>/tmp/$$.stderr
retcode=$?
output=$(cat /tmp/$$.stdout)
stderr=$(cat /tmp/$$.stderr)
나중에 파일을 정리하세요.