OS X: Fehlerausgabe des Befehls an Umgebungsvariable umleiten

OS X: Fehlerausgabe des Befehls an Umgebungsvariable umleiten

Ich weiß, dass ich die Standardausgabe auf eine Umgebungsvariable umleiten kann, z. B.

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

aber wie leitet man die Stderr-Ausgabe auch in eine Umgebungsvariable um (in diesem Beispiel, um zu erkennen, dass ein Benutzer den Dialog für die Administratoranmeldeinformationen abbricht)?

Antwort1

Dies ist der einfachste Weg, stdout und stderr in eine Variable umzuleiten:

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

Komplizierter wird es, wenn man stdout und stderr getrennt abfangen will. Ich denke, der einzige direkte Weg ist, stdout/stderr in separate Dateien umzuleiten:

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

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

Denken Sie daran, die Dateien später zu bereinigen.

verwandte Informationen