2009-06-12 5 views
4

J'écris des scripts de test et je veux capturer toutes les sorties d'erreurs et les écrire dans un journal d'erreurs ainsi que toutes les sorties normales et les écrire dans un journal séparé. J'utilise une commande de la formebash - redirection de stdoutput et stderror n'attrape pas toutes les sorties

cmd> output.file 2> error.file

La commande Je vous écris des scripts de test pour peut provoquer une erreur de segmentation. Lorsque la commande se sépare, bash imprime toujours le défaut de segmentation au terminal.

Je veux que cela se produise ou pas redirigés avec erreur standard.

Est-ce possible? Cela doit être fait par bash car les deux flux de sortie sont redirigés.

Répondre

11
bash -c 'cmd >output.file 2>error.file' >bash_output.file 2>&1 
+1

Notez que le comportement est différent entre les coquilles. La sortie zsh l'affiche dans un fichier, et le 'sh' normal place le message d'erreur de segmentation fault dans le fichier stderr pour le processus qui segfaulted, alors que bash semble le mettre sur le flux stderr pour le shell parent. Soyez très sûr de savoir avec quel shell vous travaillez en raison de la non-portabilité apparente de cette idée. –

+0

* zsh * NE FAIT PAS * le sortir dans un fichier du tout. Bonté, j'ai besoin d'apprendre à taper. :-P –

0

Je ne pense pas segfaults font partie de la production de votre programme à partir du point de vue de la coquille. Il faut donc utiliser

Attendez-vous pour une sortie plus fiable

http://en.wikipedia.org/wiki/Expect

Questions connexes