davidsen@crdos1.crd.ge.COM (Wm E Davidsen Jr) (09/19/90)
The other day I posted an example of redirecting stdout into one file, stderr into another, and printing the error messages as they happened. I reversed the names of the files. Several people have told me they can't make this work, so here's my demo script of how to do it. It runs on SunOS, Ultrix, Stelix, Convex, Xenix, and V5.3.2. #!/bin/sh # script to test redirection of stderr and stdout # # Sends stdout to junk.out, stderr or junk.err AND the screen # write the 2nd level script cat <<XX >junk.sh # generate output to stdout echo "This is regular output" # output to stderr echo "This is a test error message" >&2 XX # now test it ================ redirection here! ================ echo "___ Begin test. A dummy error message should appear:" sh junk.sh 2>&1 >junk.out | tee junk.err # comment and display files echo; echo "___ This should be stdout" cat junk.out echo; echo "___ This should be stderr" cat junk.err # cleanup rm -f junk.sh junk.out junk.err # ================================================================ -- bill davidsen (davidsen@crdos1.crd.GE.COM -or- uunet!crdgw1!crdos1!davidsen) VMS is a text-only adventure game. If you win you can use unix.
ellis@motcid.UUCP (John T Ellis) (09/21/90)
In article <2682@crdos1.crd.ge.COM> davidsen@crdos1.crd.ge.com (bill davidsen) writes: > > The other day I posted an example of redirecting stdout into one file, >stderr into another, and printing the error messages as they happened. I >reversed the names of the files. > > Several people have told me they can't make this work, so here's my >demo script of how to do it. It runs on SunOS, Ultrix, Stelix, Convex, >Xenix, and V5.3.2. Stuff deleted -- >bill davidsen (davidsen@crdos1.crd.GE.COM -or- uunet!crdgw1!crdos1!davidsen) > VMS is a text-only adventure game. If you win you can use unix. For CSH users, you can do the following: % (command > std.out) &> std.err Why this works is that you FIRST execute () with the standard output going to std.out, BUT any errors generated by () will be MERGED with standard output to std.err. Since you already sent standard output somewhere else, the merge results in only the errors! Pretty slick eh?! Later. -- ---------------------------------------------------+---------------------------- Any sufficiently advanced technology | John T. Ellis 708-632-7857 is indistinguishable from magic. :-} | Motorola Cellular | ...uunet!motcid!ellis
meissner@osf.org (Michael Meissner) (09/21/90)
In article <4444@orchid12.UUCP> ellis@motcid.UUCP (John T Ellis) writes: | For CSH users, you can do the following: | | % (command > std.out) &> std.err | | Why this works is that you FIRST execute () with the standard output going | to std.out, BUT any errors generated by () will be MERGED with standard | output to std.err. Since you already sent standard output somewhere else, | the merge results in only the errors! Pretty slick eh?! The word pathetic comes to mind before slick. -- Michael Meissner email: meissner@osf.org phone: 617-621-8861 Open Software Foundation, 11 Cambridge Center, Cambridge, MA, 02142 Do apple growers tell their kids money doesn't grow on bushes?