OS X: コマンドのエラー出力を環境変数にリダイレクトする

OS X: コマンドのエラー出力を環境変数にリダイレクトする

stdoutを環境変数にリダイレクトできることは知っています。例:

retcode=$(/usr/bin/osascript -e 'do shell script ... with administrator privileges')

しかし、stderr 出力を環境変数にリダイレクトするにはどうすればよいでしょうか (この例では、ユーザーが管理者資格情報ダイアログをキャンセルしたことを検出します)?

答え1

これは、stdout と stderr を 1 つの変数にリダイレクトする最も簡単な方法です。

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)

後で必ずファイルをクリーンアップしてください。

関連情報