On Wed, Jun 16, 2010 at 07:47:03PM +0200, Krzysztof ??elechowski wrote:
> The description of the read builtin [19] would benefit of the following note:
> Warning: A pipeline of the form { echo 1 2 | read a b; } is not useful.  Use 
> { 
> read<<<"1 2" a b; } instead.

That kind of advice is certainly welcome in tutorials, guides, and so on
which are teaching shell programming.  I don't really think it needs to
go into the manual, though.  There are hundreds, if not thousands, of
things you should _not_ do, that shouldn't have to be stated in the
reference manual.  This is just one of them.

The reason echo | read fails is because a pipeline runs each component
command in a separate subshell.  The read command sets a and b in its
subshell, which has no effect on the value of those variables in the
parent process (the main script).

I cover this issue on <http://mywiki.wooledge.org/BashFAQ/024> and on
<http://mywiki.wooledge.org/SubShell>.

Reply via email to