私はこの投稿を読んでいます: 配列内にスペースを含む任意のテキストを処理できるかどうかを確認するために、null で区切られた文字列変数でループする bash "for in" 。
上記の投稿に基づいて、これは正常に機能します。
while IFS= read -r -d '' myvar; do echo $myvar; done < <(find . -type f -print0)
私の理解を確認するために、これも行いました(それでも問題なく動作します):
while IFS= read -r -d '' myvar; do echo $myvar; done < <(printf "%s\0" 'a b' 'c d')
ただし、出力を配列に格納しようとすると、うまくいきません。
IFS= read -r -d '' -a myvar < <(printf "%s\0" 'a b' 'c d')
配列は以下のみa b
を保持し、以下を保持しませんc d
:
echo ${myvar[@]}
a b
どうやら、私がここで見逃している詳細があります。助けてくれてありがとう。
PS。私は走っています:
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14)
Copyright (C) 2007 Free Software Foundation, Inc.