Executing this code:

    set -- "  foo  "    "  bar  baz  "  "  quux  "
    unset IFS
    a=$*
    b="$*"
    printf '[%s]' "$a" "$b"; echo

Leads to this results in several shells:

ash             : [  foo     bar  baz     quux  ][  foo     bar  baz
quux  ]
dash            : [  foo     bar  baz     quux  ][  foo     bar  baz
quux  ]
b205sh          : [  foo     bar  baz     quux  ][  foo     bar  baz
quux  ]
b30sh           : [  foo     bar  baz     quux  ][  foo     bar  baz
quux  ]
b32sh           : [  foo     bar  baz     quux  ][  foo     bar  baz
quux  ]
b41sh           : [  foo     bar  baz     quux  ][  foo     bar  baz
quux  ]
b42sh           : [  foo     bar  baz     quux  ][  foo     bar  baz
quux  ]
b43sh           : [foo bar baz quux][  foo     bar  baz     quux  ]
b44sh           : [foo bar baz quux][  foo     bar  baz     quux  ]
bash            : [foo bar baz quux][  foo     bar  baz     quux  ]
posixbash       : [foo bar baz quux][  foo     bar  baz     quux  ]
lksh            : [  foo     bar  baz     quux  ][  foo     bar  baz
quux  ]
mksh            : [  foo     bar  baz     quux  ][  foo     bar  baz
quux  ]
ksh93           : [  foo     bar  baz     quux  ][  foo     bar  baz
quux  ]
attsh           : [  foo     bar  baz     quux  ][  foo     bar  baz
quux  ]
zsh             : [  foo     bar  baz     quux  ][  foo     bar  baz
quux  ]


Bash since 4.3 fails to follow what the documentation describes as that on
an assignment
values do not undergo splitting or globing.

Reply via email to