Eu fiquei com um comportamento estranho de readarray
comando.
Os man bash
estados:
readarray
Read lines from the standard input into the indexed array variable array
mas esses scripts não funcionam (a matriz está vazia):
unset arr; (echo a; echo b; echo c) | readarray arr; echo ${#arr[@]}
unset arr; cat /etc/passwd | readarray arr; echo ${#arr[@]}
E estes funcionam:
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[@]}
O que há de errado com o cachimbo?
< <
2 flechas?bash
página do manual. Em resumo, é uma sintaxe para tratar um pipeline como um descritor de arquivo.< <(...)
significa redirecionar a entrada (a primeira<
) da saída do comando dentro<(...)
. Similary,> >(...)
passaria a saída padrão para a entrada padrão do pipeline dentro>(...)
. Você não precisa necessariamente usar o redirecionamento com a substituição do processo.cat <( echo a b c )
funciona também.readarray
também pode ler do stdin, então:fonte