プロセスでリダイレクト入力を使用するとブロックさ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