Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Testing if there is data on stdin?



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