Saya terjebak dengan perilaku readarray
perintah yang aneh .
Amerika man bash
Serikat:
readarray
Read lines from the standard input into the indexed array variable array
tetapi skrip ini tidak berfungsi (array kosong):
unset arr; (echo a; echo b; echo c) | readarray arr; echo ${#arr[@]}
unset arr; cat /etc/passwd | readarray arr; echo ${#arr[@]}
Dan ini bekerja:
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[@]}
Ada apa dengan pipa?
< <
2 panah?bash
halaman manual. Singkatnya, ini sintaksis untuk memperlakukan pipa sebagai deskriptor file.< <(...)
artinya mengarahkan redirect (yang pertama<
) dari output perintah di dalamnya<(...)
. Serupa,> >(...)
akan melewati output standar ke input standar dari pipa di dalam>(...)
. Anda tidak perlu menggunakan pengalihan dengan substitusi proses.cat <( echo a b c )
berfungsi juga.readarray
dapat juga membaca dari stdin, jadi:sumber