Je suis resté avec un étrange comportement de readarray
commandement.
Les man bash
états:
readarray
Read lines from the standard input into the indexed array variable array
mais ces scripts ne fonctionnent pas (le tableau est vide):
unset arr; (echo a; echo b; echo c) | readarray arr; echo ${#arr[@]}
unset arr; cat /etc/passwd | readarray arr; echo ${#arr[@]}
Et ces travaux:
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[@]}
Quel mal avec la pipe?
< <
2 flèches?bash
page de manuel. En bref, c'est la syntaxe pour traiter un pipeline comme un descripteur de fichier.< <(...)
signifie rediriger l'entrée (la première<
) de la sortie de la commande à l'intérieur<(...)
. De même,> >(...)
passerait la sortie standard à l'entrée standard du pipeline à l'intérieur>(...)
. Vous n'avez pas nécessairement besoin d'utiliser la redirection avec la substitution de processus.cat <( echo a b c )
fonctionne aussi bien.readarray
peut également lire depuis stdin, donc:la source