带有进程输入的 readarray 块

带有进程输入的 readarray 块

当使用从进程重定向输入时,它似乎readarray会阻塞并且不会返回<,但当输入来自管道时它会起作用|

这有效:

$ (printf "line 1\nline 2\nline 3\n") | (readarray -t ARR ; echo "${ARR[1]}")
line 2

这不会返回,需要被杀死

$ readarray -t ARR <(printf "line 1\nline 2\nline 3\n"); echo "${ARR[1]}"

答案1

进程替换输出文件名,而 readarray 不会从文件中读取。您必须将文件重定向到其中,如下所示:

readarray -t ARR < <(printf "line 1\nline 2\nline 3\n"); echo "${ARR[1]}"

$ echo <(echo hello)
/dev/fd/63
$ cat <(echo hello)
hello

相关内容