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