我一直在阅读这篇文章:bash "for in" looping on null delimited string variable 以查看我是否能够处理包含数组内空格的任意文本。
根据上面的帖子,这很好用:
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.