> However, has any thought (or is there a way already?) > to read in a bunch of null terminated names from > the output of such a construct?
Well, there's not a construct to build an array like you mention, but you can use read and a while loop like this: while IFS= read -rd '' elem; do echo "<$elem>"; done < <(printf '%s\0' a b '1 2 3' $'x y \n z') Which outputs: <a> <b> <1 2 3> <x y z> Now, in more detail: # .- This is used to disable leading/trailing whitespace # | trimming. # v while IFS= read -rd '' elem; do # ^.. When you pass an empty string as a # "delimiter" for read, it (read) will read # until it finds a NUL character. echo "<$elem>"; done < <(printf '%s\0' a b '1 2 3' $'x y \n z') # ^.. we use process substitution ( <(...) ) instead of a # normal anonymous pipe in case we want to create some # persistent variables. Just be careful, as written above, it requires each record to end with a NUL byte. If there's no guarantee of a trailing NUL for each record, you will have to test if read managed to read one last element with no trailing NUL, it looks something like this: while ... read -r ... something; do ... done [[ $something ]] && ... -- Eduardo Bustamante