I am trying to get the output of a pipe into a variable. I tried the following things:
echo foo | myvar=$(</dev/stdin) echo foo | myvar=$(cat) echo foo | myvar=$(tee)
$myvar is empty.
I don’t want to do:
Because I don’t want to spawn a subshell.
Edit: I don’t want to spawn a subshell because the command before the pipe needs to edit global variables, which it can’t do in a subshell. Can it? The
echo thing is just for simplification. It’s more like:
complex_function | myvar=$(</dev/stdin)
And I don’t get, why that doesn’t work. This works for example:
complex_function | echo $(</dev/stdin)