Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Bug report + feature request
- X-seq: zsh-workers 12909
- From: "Sullivan N. Beck" <sbeck@xxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxx
- Subject: Bug report + feature request
- Date: Thu, 05 Oct 2000 14:11:21 -0400
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
I have found a bug in zsh. I've got access to:
zsh 3.1.5 on Solaris 2.6
zsh 3.1.9 on Solaris 8, redhat 6.2, irix 6.5
and each of these suffers from the problem.
Basically, I want to switch STDOUT and STDERR so I pipe STDERR to some
other commands. The following lines show what's happening to prevent me
from doing this (though I can do it in sh/ksh distributed with Solaris).
echo '=1 ====='
echo
ls -l /tmp/z | while read line ;do echo ":: "$line; done
echo
echo '=2 ====='
echo
ls -l /tmp/z/a | while read line ;do echo ":: "$line; done
echo
echo '=3 ====='
echo
ls -l /tmp/z 3>&1 1>&2 2>&3 | while read line ;do echo ":: "$line; done
echo
echo '=4 ====='
echo
ls -l /tmp/z/a 3>&1 1>&2 2>&3 | while read line ;do echo ":: "$line; done
produce
=1 =====
:: total 16
:: -rw-r--r-- 1 sbeck apps 396 Oct 5 13:44 foo
=2 =====
/tmp/z/a: No such file or directory
=3 =====
total 16
-rw-r--r-- 1 sbeck apps 396 Oct 5 13:44 foo
:: total 16
:: -rw-r--r-- 1 sbeck apps 396 Oct 5 13:44 foo
=4 =====
:: /tmp/z/a: No such file or directory
Notice that in the 3rd section, the output from the command ends up on
both STDOUT and STDERR. All other shells (ksh, sh, bash) that I tested
give the correct output for the 3rd case:
total 16
-rw-r--r-- 1 sbeck apps 396 Oct 5 13:44 foo
Now for the feature request. Since I'd actually like to separate and
pipe STDOUT and STDERR separately to different commands (all of the
above came about from various attempts to get this working) without
resorting to fifos, intermediate files, etc., what I'd _really_ like to
do is to be able to pipe different file descriptors similar to how I can
redirect them to a file. For example, I'd like to replace the following
lines:
COMMAND > /tmp/stdout 2> /tmp/stderr
cat /tmp/stderr | STDERR_COMMAND
cat /tmp/stdout | STDOUT_COMMAND
with the single line:
COMMAND >| STDOUT_COMMAND 2>| STDERR_COMMAND
If this syntax isn't acceptable, that's fine with me. Any syntax is
fine. I'd just like the functionality.
Please reply to me as well as the list since I'm not currently subscribed
to this list.
--------------------------| Sullivan Beck |---------------------------
mailto:sbeck@xxxxxxxxxxxx | Senior System Programmer
http://www.cise.ufl.edu/~sbeck | University of Florida
PH : (352) 392-1057 | CISE Department
Fax: (352) 392-1220 | CSE 314E
------------------------------------------------------------------------
Messages sorted by:
Reverse Date,
Date,
Thread,
Author