Lese inn verdier i en shell-variabel fra en pipe

Jeg prøver å få bash til å behandle data fra stdin som blir pipet inn, men uten hell. Det jeg mener er at ingen av følgende fungerer:

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=

der jeg vil at utdataene skal være test=hello world. Jeg' har prøvd å sette "" anførselstegn rundt "$test" som heller ikke fungerer.

read` vil ikke lese fra en pipe (eller muligens går resultatet tapt fordi pipen oppretter et subshell). Du kan imidlertid bruke en her-streng i Bash:


$ read a b c 
Kommentarer (1)

Syntaksen for en implisitt pipe fra en shell-kommando til en bash-variabel er følgende

var=$(command)

eller

var=`command`

I eksemplene dine sender du data til en assignment-setning, som ikke forventer noen input.

Kommentarer (4)

Piping av noe inn i et uttrykk som involverer en oppgave, oppfører seg ikke slik.

Prøv i stedet:

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