Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Testing if there is data on stdin?
- X-seq: zsh-users 14406
- From: Atom Smasher <atom@xxxxxxxxxxx>
- To: Lloyd Zusman <ljz@xxxxxxxxxx>
- Subject: Re: Testing if there is data on stdin?
- Date: Fri, 18 Sep 2009 14:27:09 +1200 (NZST)
- Cc: zsh-users@xxxxxxxxxx
- In-reply-to: <m2ocp9ma6k.fsf@xxxxxxxxxx>
- Mailing-list: contact zsh-users-help@xxxxxxxxxx; run by ezmlm
- Openpgp: id=0xB88D52E4D9F57808; algo=1 (RSA); size=4096; url=http://atom.smasher.org/pgp.txt
- References: <m2ocp9ma6k.fsf@xxxxxxxxxx>
On Thu, 17 Sep 2009, Lloyd Zusman wrote:
The reason I want to do this is because I have a zsh script which, under
certain circumstances, needs to get its arguments via stdin instead of
from the command line. I'd like to be able to test within the script
whether there is data waiting on stdin, and if so, to read it and use it
to construct the argument list. If there is no data waiting on stdin,
then I just want to get the arguments from the command line.
======================
read -t foo || { print -n "Input required from TTY: " ; read foo }
echo ${foo}
Also, there is a slight difference in processing logic if I find data in
stdin, and I need to do a little bit of special initialization _before_
I try to read that data ... but only if that data is on stdin waiting to
be read.
=================
if { read -t foo } {
## do this if input was read from STDIN
print "Input read from stdin: ${foo}"
} else {
## do this if input comes from TTY
print -n "Input required from TTY: "
read foo
print "Input read from TTY: ${foo}"
}
if the input you're looking for is on a single line you shouldn't have to
mess with zselect.
--
...atom
________________________
http://atom.smasher.org/
762A 3B98 A3C3 96C9 C6B7 582A B88D 52E4 D9F5 7808
-------------------------------------------------
"Any sufficiently advanced technology
is indistinguishable from magic."
-- Arthur C. Clarke
Messages sorted by:
Reverse Date,
Date,
Thread,
Author