* 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).