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.