[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: |
Greg Wooledge |
Subject: |
Re: Spaces trimmed from $* when assigned while IFS is unset [was: Unexpected word splitting on $* ...] |
Date: |
Wed, 27 Sep 2017 08:44:19 -0400 |
User-agent: |
NeoMutt/20170113 (1.7.2) |
On Wed, Sep 27, 2017 at 05:50:16AM +0200, Martijn Dekker wrote:
> Test script:
>
> set " abc " " def ghi " "jkl "
> unset -v IFS var
> var=${var-$*}/${var-$*}
> printf '[%s]\n' "$var"
wooledg:~$ set " abc " " def ghi " "jkl "
wooledg:~$ unset IFS
wooledg:~$ var="$*"; declare -p var
declare -- var=" abc def ghi jkl "
wooledg:~$ unset var; var=${var-$*}; declare -p var
declare -- var="abc def ghi jkl"
wooledg:~$ unset var; var=${var-"$*"}; declare -p var
declare -- var=" abc def ghi jkl "
I'm just going to chalk this up as yet another example of unquoted $*
or $@ being Completely Wrong.
Never use unquoted $* or $@. It triggers all kinds of bugs (or
"differences in behavior across shells"), and has no conceivable
justification. Always use "$@" or "$*".