bashに標準入力からのデータを処理させようとしていますが、うまくいきません。どういうことかというと、以下のどれも動かないのです。
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'sの回答を参照してください。