sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #12085
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