Ich versuche, die Bash dazu zu bringen, Daten aus stdin zu verarbeiten, die über eine Pipeline eingespeist werden, aber ich habe kein Glück. Was ich meine ist keine der folgenden Arbeit:
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=
wo ich die Ausgabe test=hello world
haben möchte. Ich habe versucht "" Anführungszeichen um "$test"
zu setzen, das funktioniert auch nicht.
read
liest nicht aus einer Pipe (oder das Ergebnis geht verloren, weil die Pipe eine Subshell erzeugt). Sie können jedoch einen String hier in der Bash verwenden:
$ read a b c <<< $(echo 1 2 3)
$ echo $a $b $c
1 2 3
Aber siehe @chepner's Antwort für Informationen über lastpipe
.