Dear All,

Might I propose bash should add another operator, >>> for "redirection into a variable". This would be by analogy with the <<< operator.



For example, we can currently use <<< to save an "echo", by doing this:

   TEXT="Hello World"
   grep -o 'hello' <<<"$TEXT"

instead of

   TEXT="Hello World"
   echo "$TEXT" | grep -o 'hello'




I am therefore proposing that the following syntax would be useful:

   echo "Hello World" >>> TEXT

creates a variable named TEXT, whose contents is the string "Hello".





Why is this useful?

1. Read has a nasty habit of creating subshells. For example,

     echo Hello | read TEXT

doesn't do what we expect. TEXT is empty!


2. The $() or `` constructs are great, excepting that they also create subshells. This messes up things like PIPESTATUS.

For example:

     echo hello | cat | cat | cat
     #hello
     echo [EMAIL PROTECTED]
     #0 0 0 0

     TEXT=$(echo hello | cat | cat | cat )
     echo [EMAIL PROTECTED]
     #0

Here we've captured the output we wanted, but lost the pipestatus.

3. The $() construct doesn't let you capture both stderr and stdout into different variables.


I know I could do it all with tempfiles, but that somewhat misses the point.




Incidentally, if this is useful, it would be nice to support the
rather prettier counterpart to the <<< operator, and permit this usage:

     "$TEXT" >>> grep -o 'hello'


What do you think?


Regards,

Richard




Reply via email to