我试图让bash处理来自stdin的数据,这些数据被管道输入,但没有成功。我的意思是,下面这些方法都不能工作。
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=
我希望输出为 "test=hello world"。我试着在""周围加上引号
"$test"`,这也不起作用。
read
不会从管道中读取(也可能因为管道创建了一个子壳,所以结果会丢失)。然而,你可以在Bash中使用这里的字符串。
$ read a b c <<< $(echo 1 2 3)
$ echo $a $b $c
1 2 3
但关于 "lastpipe "的信息,请参见@chepner'的回答。