Ich weiß, wie zitiert unten von herekönnen nicht kombiniert exec und Umleitung in Bash-Skript verstehen
exec exec ist ein Programm in aktuellen Prozess zur Ausführung des aktuellen Programms im aktuellen Prozess ersetzt, ohne einen neuen Prozess Forking . Es ist nicht etwas, das Sie in jedem Skript verwenden würden, das Sie schreiben, aber es ist gelegentlich nützlich.
Ich schaue mir ein Bash-Skript an, das ich nicht genau verstehen kann.
#!/bin/bash
LOG="log.txt"
exec &> >(tee -a "$LOG")
echo Logging output to "$LOG"
Hier hat exec keinen Programmnamen zum Ausführen. Was heißt das? und es scheint, die Ausführungsausgabe in eine Protokolldatei zu erfassen. Ich würde verstehen, wenn es exec program |& tee log.txt
wäre, aber hier kann ich exec &> >(tee -a log.txt)
nicht verstehen. warum noch ein >
nach &>
?
Was bedeutet die Linie? (Ich weiß, eine Option ist zum Anhängen und &>
ist zum Umleiten einschließlich stderr)
EDIT: nachdem ich die Lösung ausgewählt habe, fand ich die exec &> >(tee -a "$LOG")
funktioniert, wenn es Bash Shell (nicht SH) ist. Also habe ich die ursprüngliche #!/bin/sh
zu #!/bin/bash
geändert. Aber exec &>> "$LOG"
funktioniert sowohl für bash und sh.
Ist in Ihrem System die Bash-Handbuchseite installiert? Starten Sie es und suchen Sie nach "exec" (exec gefolgt von einem Leerzeichen). – Jens