Mam skrypt powłoki, set -x
aby mieć pełne wyjście / debugowanie:
#!/bin/bash
set -x
command1
command2
...
Dane wyjściowe wyglądają następująco:
+ command1
whatever output from command1
+ command2
whatever output from command2
Moim problemem jest to, wyjście shell (spowodowane przez set -x
) idzie do stderr, zmieszanej z wyjściem poleceń ( command1
, command2
...). Byłbym szczęśliwy, gdyby „normalne” wyjście na ekranie (jak skrypt działał bez niego set -x
) i „dodatkowe” wyjście bash oddzielnie w pliku.
Więc chciałbym mieć to na ekranie:
whatever output from command1
whatever output from command2
a to w pliku dziennika:
+ command1
+ command2
(również dobrze, jeśli plik dziennika zawiera wszystko razem)
set -x 2> file
Oczywiście doens't podjąć właściwą efekt, bo to nie jest wyjście z polecenia set, ale to się zmieni zachowanie bash.
Używanie bash 2> file
całego skryptu również nie działa dobrze, ponieważ przekierowuje stderr każdego polecenia, które również działają w tej powłoce, więc nie widzę komunikatu o błędzie poleceń.