プロセス入力を持つ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

おすすめ記事