zsh-users
 help / color / mirror / code / Atom feed
* easy way to read from stdin ?
@ 1998-06-23 20:37 Sweth Chandramouli
  1998-06-23 22:01 ` Bart Schaefer
  0 siblings, 1 reply; 4+ messages in thread
From: Sweth Chandramouli @ 1998-06-23 20:37 UTC (permalink / raw)
  To: ZSH Users

	this is probably just going to show my colossal cluelessness, but is 
there an easy way to get a zsh script to read from standard input?  i have a 
script that i'd like to convert into a cgi, but that means that rather than 
reading input from a file, i'd have to have it come from stdin.  i tried a 
"while read ... ; do ... done" loop with no redirection of input, but that 
didn't seem to work right.  what am i missing here?
	
	-- sweth.

-- 
Sweth Chandramouli
IS Coordinator, The George Washington University
<sweth@gwu.edu> / (202) 994 - 8521 (V) / (202) 994 - 0458 (F)
<a href="http://astaroth.nit.gwu.edu/~sweth/disc.html">*</a>


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: easy way to read from stdin ?
  1998-06-23 20:37 easy way to read from stdin ? Sweth Chandramouli
@ 1998-06-23 22:01 ` Bart Schaefer
  1998-06-23 22:42   ` Sweth Chandramouli
  0 siblings, 1 reply; 4+ messages in thread
From: Bart Schaefer @ 1998-06-23 22:01 UTC (permalink / raw)
  To: Sweth Chandramouli, ZSH Users

On Jun 23,  4:37pm, Sweth Chandramouli wrote:
} Subject: easy way to read from stdin ?
}
} 	this is probably just going to show my colossal cluelessness, but is 
} there an easy way to get a zsh script to read from standard input?

It should be reading everything except the commands themselves from the
standard input "by default."  However, I'm puzzled when you say:

} ... rather than reading input from a file ...

What is it that you are doing to cause it to read from a file?  That is,
when it's not a cgi, how do you run it?

} i tried a 
} "while read ... ; do ... done" loop with no redirection of input, but that 
} didn't seem to work right.

How exactly did it not work?  What, if any, flags are you passing to read?
(For example, the -q flag will forcibly open /dev/tty ....)

} what am i missing here?

You can try "read -u0 ..." to force the input to come from file descriptor
zero, but I don't know why that would be necessary.

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Re: easy way to read from stdin ?
  1998-06-23 22:01 ` Bart Schaefer
@ 1998-06-23 22:42   ` Sweth Chandramouli
  1998-06-23 23:50     ` Bart Schaefer
  0 siblings, 1 reply; 4+ messages in thread
From: Sweth Chandramouli @ 1998-06-23 22:42 UTC (permalink / raw)
  To: ZSH Users

On Tue, Jun 23, 1998 at 03:01:45PM -0700, Bart Schaefer wrote:
> On Jun 23,  4:37pm, Sweth Chandramouli wrote:
> } Subject: easy way to read from stdin ?
> }
> } 	this is probably just going to show my colossal cluelessness, but is 
> } there an easy way to get a zsh script to read from standard input?
> 
> It should be reading everything except the commands themselves from the
> standard input "by default."  However, I'm puzzled when you say:
> 
> } ... rather than reading input from a file ...
> 
> What is it that you are doing to cause it to read from a file?  That is,
> when it's not a cgi, how do you run it?
	i put a "< filename" after the while read loop, so that it would
read input from the file "filename".  basically, i'm trying to create a
mailto form here--it should take the values from the form in question,
do some processing on them, return a web page indicating success or
failure, and mail the results off to someone using mailx.  the processing
i was trying to do is the same as what i was doing elsewhere using an
already-existing script, so i figured that if i could just cut&paste
that script into my new cgi form, and remove the redirection of stdin
from a file, everything would work fine.  it _does_ work fine from the
command line (e.g. "echo 'testing' | myscript.cgi" does what i expect),
but when i run it as a form, it acts as though it is getting no input.
	i do know that the input is, in fact, getting through to the
script, however, because i tried replacing my script with a little perl
snippet i found elsewhere that basically pumps stdin into a variable and
then prints it to screen, and that worked fine.  i don't really have the
time or patience right now to do what i should do, and actually learn
perl, so i was hoping that there was some subtle point about stdin for
a shell script that i was missing.
	if no one else has any ideas, i'll probably wander over to the
perl newsgroups and see if anyone can explain exactly what that perl
snippet that i stole is doing, to see if maybe i'm not understanding
it correctly.  (i should probably do that regardless, i guess...)

	-- sweth.

-- 
Sweth Chandramouli
IS Coordinator, The George Washington University
<sweth@gwu.edu> / (202) 994 - 8521 (V) / (202) 994 - 0458 (F)
<a href="http://astaroth.nit.gwu.edu/~sweth/disc.html">*</a>


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: easy way to read from stdin ?
  1998-06-23 22:42   ` Sweth Chandramouli
@ 1998-06-23 23:50     ` Bart Schaefer
  0 siblings, 0 replies; 4+ messages in thread
From: Bart Schaefer @ 1998-06-23 23:50 UTC (permalink / raw)
  To: Sweth Chandramouli, ZSH Users

On Jun 23,  6:42pm, Sweth Chandramouli wrote:
} Subject: Re: Re: easy way to read from stdin ?
}
} > What is it that you are doing to cause it to read from a file?  That is,
} > when it's not a cgi, how do you run it?
} 	i put a "< filename" after the while read loop, so that it would
} read input from the file "filename".  basically, i'm trying to create a
} mailto form here--it should take the values from the form in question,
} [...]
} but when i run it as a form, it acts as though it is getting no input.

Is the form using METHOD=post to send data to the server?  Otherwise there
isn't any standard input.  The enviroment variable CONTENT_LENGTH should
tell how many bytes you can expect to read.

Try doing

	local input
	read -u0k $CONTENT_LENGTH input

This should stuff the entire stdin (up to $CONTENT_LENGTH bytes) into
the variable "input".  The input may be coming to you with "\r\n" line
endings, in which case I'm not sure how a plain "read" behaves. 

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~1998-06-23 23:57 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-06-23 20:37 easy way to read from stdin ? Sweth Chandramouli
1998-06-23 22:01 ` Bart Schaefer
1998-06-23 22:42   ` Sweth Chandramouli
1998-06-23 23:50     ` Bart Schaefer

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).