← Back to team overview

sslug-teknik team mailing list archive

Re: tee til stderr

 

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Peter Toft <pto@xxxxxxxx> writes:

> Hvordan kan jeg i et tcsh script få stdout og stderr meddelelser logget
                       ^^^^^^^^^^^

Gys, du laver da vel ikke scripts med tcsh ?-) .  bash/ksh/sh er langt bedre
til scripts.  Bl.a. er deres redirection langt mere avanceret.

Men OK, tcsh kan trods alt godt løse dit problem her alligevel.

> til hver sin fil og stadig vist på skærm.
> 
> Jeg startede med
> 
> #!/usr/bin/tcsh
> (PROGRAM > OUT_FIL) >& ERR_FIL
> 
> Fint nok, så er filerne fyldt med rette indhold.
> OUT_FIL spiser stdout og ERR_FIL spiser stderr
> 
> Hvis det kun er stdout jeg vil have vist og logget til fil, så er "tee"
> kanon
> 
> PROGRAM | tee OUT_FIL
> 
> men jeg kan ikke få hold på stderr på samme måde, eller hvad.....

Jo.  Du skal bare kombinere dine to halve løsninger, og så tilsætte to små
tricks fra `man tcsh':

       Diagnostic output may be directed through a pipe with the standard
1:     output.  Simply use the form `|&' rather than just `|'.
                                     ^^

       The shell cannot presently redirect diagnostic output without also
       redirecting standard output, but `(command > output-file) >&
       error-file' is often an acceptable workaround.  Either output-file or
2:     error-file may be `/dev/tty' to send output to the terminal.
                          ^^^^^^^^

Altså:

   #!/usr/bin/tcsh
   (PROGRAM | tee OUT_FIL > /dev/tty) |& tee ERR_FIL

Det virker fint i min tcsh 6.07 med PROGRAM lig

   perl -e 'print "out\n"; warn "err\n"'


- -- 
Ulrik Dickow <ukd@xxxxxxxxxx>    (Phone +45 36 39 08 00, Fax +45 36 77 03 01)
DSA/ELG-E: 46EF 15D6 83CC 4C28 0147  33A6 F6EE DF20 184B C4D9 (ID 0x184BC4D9)
Get key at: http://wwwkeys.pgp.net:11371/pks/lookup?op=get&search=0x184BC4D9

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v0.9.9 (GNU/Linux)
Comment: By Mailcrypt 3.5.2 and GNU Privacy Guard, http://www.gnupg.org

iD8DBQE3uySa9u7fIBhLxNkRAgreAKDSkrFwV3XuctEVKRoVZeJi4wTcpQCg7q/y
qAys/YdwacLhCCOaD1U72hM=
=qWOt
-----END PGP SIGNATURE-----


References