[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Spaces trimmed from $* when assigned while IFS is unset [was: Unexpe
From: |
Clint Hepner |
Subject: |
Re: Spaces trimmed from $* when assigned while IFS is unset [was: Unexpected word splitting on $* ...] |
Date: |
Wed, 27 Sep 2017 10:49:20 -0400 |
On Wed, Sep 27, 2017 at 9:10 AM, Martijn Dekker <martijn@inlv.org> wrote:
> Op 27-09-17 om 14:44 schreef Greg Wooledge:
> > I'm just going to chalk this up as yet another example of unquoted $*
> > or $@ being Completely Wrong.
>
> Nonsense. This is a bug in bash and it should be fixed, not excused.
> Quoting expansions should never be necessary for assignments.
For what its worth, this behavior appears to have been introduced in bash
4.3:
% cat tmp.bash
set " abc " " def ghi " "jkl "
unset -v IFS var
var=${var-$*}/${var-$*}
printf '[%s]\n' "$var"
% for tag in 3.2 4.0 4.1 4.2 4.3 4.4; do echo "$tag"; docker run -i
bash:$tag bash < tmp.bash; done
3.2
[ abc def ghi jkl / abc def ghi jkl ]
4.0
[ abc def ghi jkl / abc def ghi jkl ]
4.1
[ abc def ghi jkl / abc def ghi jkl ]
4.2
[ abc def ghi jkl / abc def ghi jkl ]
4.3
[abc def ghi jkl/abc def ghi jkl]
4.4
[abc def ghi jkl/abc def ghi jkl]