Help bourne shell problem on sun and bsd

Christopher J. Hawley chawley at sundiver.esd.sgi.com
Fri Jun 7 10:44:35 AEST 1991


    In article <3089 at cod.NOSC.MIL>, medin at cod.nosc.mil (Ted Medin) writes:

|>  When using the bourne shell:
|> 
|> pwd > temp
|> read dir < temp
|> 
|>  Just hangs until you type something on the keyboard when using bsd 4.3.
|> However on a sun machine it works fine, the variable dir gets the current
|> working directory.
|>  Is "read" keyboard input only or ?????

    From The UNIX Programming Environment, Kernighan & Pike, pp. 159-160:
	 --------------------------------

	  " read  can only read from the standard input; it can't even
	be redirected.  None of the shell built-in commands (as opposed
	to the control flow primitives like  for ) can be redirected
	with  >  or  < :

	[example omitted]

	  "This might be described as a bug in the shell, but it is a
	fact of life.  Fortunately, it can usually be circumvented by
	redirecting the loop surrounding the  read .  This is the key
	to our implementation of the  pick  command: "

	[example of shell command  pick  omitted]


So, in any environment (with the dubious exception of Sun's), you can say

		for foo in dummy
		do
		    read  dir
		done < temp

with the desired results.  Any of the control flow primitives can be used
to achieve the same effect...

		while : ; do read  dir; break; done < temp

is another way to get what you want.

    For the curious: what version of Sun software are you running which has
the  sh  behaviour you describe?

#include	<std_disclaimer.h>
      /*  SGI delivers mail, but I write the opinions contained herein. */
---
    Christopher J. Hawley / esper               chawley at sundiver.esd.sgi.com
    Silicon Graphics, Inc.    1L-945            phone:  415 / 335-1621
    Mountain View, CA   94039-7311  USA                 408 / 243-1042
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    "Nicht nur wie schnell Sie fahren, sondern _wie_ Sie schnell fahren."



More information about the Comp.unix.shell mailing list