私はを使用してファイルを検索しfind、それらのファイルをBash配列に配置して、他の操作(lsまたはなどgrep)を実行できるようにしています。しかしreadarray、findパイプで出力を読み取っていない理由を理解できません。
現在のディレクトリに2つのファイルがあるfile1.txtとしfile2.txtます。したがって、find出力は次のようになります。
$ find . -name "file*"
./file1.txt
./file2.txt
だから私はそれを2つの要素が文字列である配列にパイプしたいと思います("./file1.txt"そして"./file2.txt"引用符なしで)。
他にもいくつか試してみました:
$ declare -a FILES
$ find . -name "file*" | readarray FILES
$ echo "${FILES[@]}"; echo "${#FILES[@]}"
0
echo出力からわかるように、私の配列は空です。
だから私はここで何が間違っているのですか?の出力を標準入力としてreadarray読み取らずfind、それらの文字列を配列に入れないのはなぜですか?
readarray -d '' < <(find your_args -print0)