bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: builtin read stops at '\0'


From: Rafaël Fourquet
Subject: Re: builtin read stops at '\0'
Date: Thu, 19 May 2011 15:23:55 +0200

>
>
> If you want to handle a stream of NUL-delimited strings in bash, the
> best approach is to use read -d '', thus:
>
> imadev:~$ printf '%s\0' one two three | while read -r -d '' s; do echo
> "<$s>"; done
> <one>
> <two>
> <three>
>
> read -d '' means "stop at NUL, instead of stopping at newline".
>

Thanks for your reply. I was aware of your solution, but in my situation the
'\0' problem makes things more complicated:
I have a program which outputs groups of filenames. Each group is separated
by a newline, and within each group,
each name is separated by '\0'. I want to pipe each group to xargs -0. But
because of this '\0' implementation detail (I did not find it is
documented).
the following solution (working in zsh) don't work in bash (and I couldn't
find a  non-convoluted solution in bash) :

myprog | while read group; do echo $group | tr -d '\n' | xargs -0 ls -1;
done

If I use <while read -r -d '' ...>, I don't know how to break on each
line...
A solution with mapfile would be even better, but mapfile has the same
problem as read in this regard.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]