OS X: Redirect error output dari perintah ke variabel lingkungan

0

Saya tahu bahwa saya bisa mengarahkan stdout ke variabel lingkungan, mis

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

tetapi bagaimana cara mengarahkan output stderr ke variabel lingkungan juga (dalam contoh ini untuk mendeteksi pengguna membatalkan dialog kredensial admin)?

Thomas S.
sumber

Jawaban:

1

Ini adalah cara paling sederhana untuk mengarahkan stdout dan stderr menjadi satu variabel:

output=$(/usr/bin/osascript -e 'do shell script ... with administrator privileges' 2>&1)
retcode=$?

Semakin rumit, jika Anda ingin menangkap stdout dan stderr secara terpisah. Saya pikir satu-satunya cara lurus ke depan adalah mengarahkan stdout / stderr ke file yang terpisah:

/usr/bin/osascript -e 'do shell script ... with administrator privileges' >/tmp/$$.stdout 2>/tmp/$$.stderr

retcode=$?
output=$(cat /tmp/$$.stdout)
stderr=$(cat /tmp/$$.stderr)

Pastikan Anda membersihkan file nanti.

Dominique Barton
sumber