Date: Tue, 25 Apr 2000 16:43:15 -0400 (EDT) From: Greg Pavelcak <gpav@som.umass.edu> To: Doug Barton <Doug@gorean.org> Cc: freebsd-questions@FreeBSD.ORG Subject: Re: Making sh script pause for input Message-ID: <Pine.OSF.4.10.10004251640440.13660-100000@yolen.oit.umass.edu> In-Reply-To: <Pine.BSF.4.21.0004251258300.38506-100000@dt051n0b.san.rr.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 25 Apr 2000, Doug Barton wrote: > On Tue, 25 Apr 2000, Alfred Perlstein wrote: > > > * Doug Barton <Doug@gorean.org> [000425 11:01] wrote: > > > Greg Pavelcak wrote: > > > > > > > > This is driving me nuts. I want a script that prompts with a > > > > student's name and then waits for input regarding that student > > > > then moves on. I've tried using xargs and a script like this: > > > > > > The bad news, you can't do that with sh because once you tell it to > > > take its input from a file that's where it's going to take all of its > > > input from. The good news, this is a really easy perl script, and this > > > kind of processing is one of the things perl is really good for. > > > > Actually... :) > > > > http://www.complete.org/mailinglists/archives/aclug-l-199811/msg00018.html > > > > explains some really nifty things you can do with sh and filehandles. > > None of which apply to the original poster's exmple. He wants to > read from the real stdin while inside a loop which is already reading its > stdin from a file. If you can do what the author asked for in sh, I'd love > to see it. > Just for the record, my original script, #!/bin/sh while read LOGNUM CLASS LNAME FNAME GPA MAJOR ; do grep -iqe "$FNAME \$ $LNAME" appstatus if [ $? -eq 1 ]; then echo $FNAME $LNAME ; echo -n "Status? " ; read STATUS echo "$LOGNUM \$ $CLASS \$ $FNAME \$ $LNAME \$ $GPA \$ $MAJOR \$ $STATUS" >> appstatus ; fi done < contractsS00 was a failure while #!/bin/sh while read LOGNUM CLASS LNAME FNAME GPA MAJOR ; do grep -iqe "$FNAME \$ $LNAME" appstatus if [ $? -eq 1 ]; then echo $FNAME $LNAME ; echo -n "Status? " ; read STATUS < /dev/tty ^^^^^^^^^^ echo "$LOGNUM \$ $CLASS \$ $FNAME \$ $LNAME \$ $GPA \$ $MAJOR \$ $STATUS" >> appstatus ; fi done < contractsS00 was a complete success. I would be glad to credit the kind person who sent this to me, but perhaps he prefers to remain an anonymous sh whiz. Greg To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.OSF.4.10.10004251640440.13660-100000>