Ho uno script di shell con set -x
un output dettagliato / debug:
#!/bin/bash
set -x
command1
command2
...
L'output è simile al seguente:
+ command1
whatever output from command1
+ command2
whatever output from command2
Il mio problema è, l'uscita shell (causata da set -x
) va al stderr, mescolato con l'output dei comandi ( command1
, command2
, ...). Sarei felice di avere l'output "normale" sullo schermo (come lo script senza eseguire set -x
) e l'output "extra" di bash separatamente in un file.
Quindi vorrei avere questo sullo schermo:
whatever output from command1
whatever output from command2
e questo in un file di registro:
+ command1
+ command2
(va bene anche se il file di registro ha tutto insieme)
Il set -x 2> file
ovviamente doens't prendere il giusto effetto, perché non è l'output del comando set, ma modificare il comportamento della bash.
Anche l'utilizzo bash 2> file
per l'intero script non fa la cosa giusta, perché reindirizza lo standard di ogni comando che viene eseguito anche in questa shell, quindi non vedo il messaggio di errore dei comandi.