Reading null delimited strings through a Bash loop
The preferred way to do this is using process substitution
while IFS= read -r -d $'\0' file; do
# Arbitrary operations on "$file" here
done < <(find /some/path -type f -print0)
If you were hell-bent on parsing a bash variable in a similar manner, you can do so as long as the list is not NUL-terminated.
Here is an example of bash var holding a tab-delimited string
$ var=$(echo -ne "foo\tbar\tbaz\t");
$ while IFS= read -r -d $'\t' line ; do \
echo "#$line#"; \
done <<<"$var"
#foo#
#bar#
#baz#
Pipe them to xargs -0
:
files="$( find ./ -iname 'file*' -print0 | xargs -0 )"
xargs manual:
-0, --null Input items are terminated by a null character instead of by whitespace, and the quotes and backslash are not special (every character is taken literally).