Ich habe ein Shell-Skript mit set -xausführlicher / Debug-Ausgabe:
#!/bin/bash
set -x
command1
command2
...
Die Ausgabe sieht folgendermaßen aus:
+ command1
whatever output from command1
+ command2
whatever output from command2
Mein Problem ist, der Shell - Ausgang (durch set -x) geht zum Stderr, mit der Ausgabe der Befehle vermischen ( command1, command2, ...). Ich würde mich freuen, wenn die "normale" Ausgabe auf dem Bildschirm (wie das Skript ohne ausgeführt würde set -x) und die "zusätzliche" Ausgabe von bash separat in einer Datei wären .
Deshalb möchte ich Folgendes auf dem Bildschirm haben:
whatever output from command1
whatever output from command2
und dies in einer Protokolldatei:
+ command1
+ command2
(Auch in Ordnung, wenn die Protokolldatei alles zusammen hat)
Die set -x 2> fileoffensichtlich nehmen doens't die richtige Wirkung, weil es nicht die Ausgabe des Befehls set, aber es das Verhalten der bash ändern.
Das Verwenden bash 2> filefür das gesamte Skript ist auch nicht richtig, da es den stderr jedes Befehls umleitet, der auch in dieser Shell ausgeführt wird, sodass die Fehlermeldung der Befehle nicht angezeigt wird.