On Fri, Nov 22, 2013 at 8:00 AM, Aleksey Midenkov <mide...@gmail.com> wrote:
> Since word splitting in vars is used not more frequently than never, > protecting all vars in scripts with double quotes is quite unpleasant > thing. Therefore, I want exactly this behavior always to be in my > scripts: > > $ IFS="" > $ f() { echo $1; }; x="a b c"; f $x > a b c > > But, IFS influences `read`, which of course benefits from word > splitting. In light of that conflict, I propose two possible > solutions: > > 1: shopt -s unsplit_vars > > which will turn off word splitting for var expansion. > > or 2: new IFS2 var that will override IFS for `read` (i.e. `read` will > use IFS2 when IFS is unset). > Your code is still not safe, you would need set -f to disable globing too. it's easy enough to set IFS locally for read, just set it in its environment like IFS=' ' read a b <<"hello world"