Leer valores en una variable del shell desde una tubería

Estoy tratando de conseguir bash para procesar los datos de stdin que se canaliza en, pero no hay suerte. Lo que quiero decir es que ninguno de los siguientes trabajos:

echo "hello world" | test=($(< /dev/stdin)); echo test=$test
test=

echo "hello world" | read test; echo test=$test
test=

echo "hello world" | test=`cat`; echo test=$test
test=

donde quiero que la salida sea test=hello world. I'he intentado poner "" comillas alrededor de `"$test"que doesn't trabajo tampoco.

read no leerá desde una tubería (o posiblemente el resultado se pierda porque la tubería crea un subshell). Sin embargo, puede utilizar una cadena de aquí en Bash:


$ read a b c 
Comentarios (1)

La sintaxis para una tubería implícita desde un comando del shell a una variable de bash es

var=$(command)

o

var=`command`

En tus ejemplos, estás canalizando datos a una sentencia de asignación, que no espera ninguna entrada.

Comentarios (4)

La introducción de algo en una expresión que implique una asignación no se comporta así.

En su lugar, inténtalo:

test=$(echo "hello world"); echo test=$test
Comentarios (0)