当使用从进程重定向输入时,它似乎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