Ich blieb bei einem merkwürdigen readarray
Kommandoverhalten.
Die man bash
Staaten:
readarray
Read lines from the standard input into the indexed array variable array
Aber diese Skripte funktionieren nicht (Array ist leer):
unset arr; (echo a; echo b; echo c) | readarray arr; echo ${#arr[@]}
unset arr; cat /etc/passwd | readarray arr; echo ${#arr[@]}
Und diese Arbeit:
unset arr; readarray arr < /etc/passwd ; echo ${#arr[@]}
unset arr; mkfifo /tmp/fifo; (echo a; echo b; echo c) > /tmp/fifo & mapfile arr < /tmp/fifo ; echo ${#arr[@]}
Was ist los mit Pipe?
< <
2 Pfeile zu haben ?bash
Manpage. Kurz gesagt, es handelt sich um eine Syntax zur Behandlung einer Pipeline als Dateideskriptor.< <(...)
bedeutet, die Eingabe (die erste<
) von der Ausgabe des Befehls nach innen umzuleiten<(...)
. In ähnlicher Weise> >(...)
würde die Standardausgabe an die Standardeingabe der internen Pipeline übergeben>(...)
. Sie müssen die Umleitung nicht unbedingt für die Prozessersetzung verwenden.cat <( echo a b c )
funktioniert auch.readarray
kann auch von stdin lesen, also:quelle