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)?

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.