Hi!
I am translating man 1 bash in my native languge. There is a somewhat confu-
sing explanation (at leas for me) of IFS varible in EXPANSION section, Word
Splitting subsection. I'll quote it here:
> Word Splitting
> The shell scans the results of parameter expansion, command
substitu-
> tion, and arithmetic expansion that did not occur within
double
> quotes for word splitting."
example:
var="a b c"
echo $var
> The shell treats each character of IFS as a delimiter, and
splits the
> results of the other expansions into words on these
characters. If
> IFS is unset, or its value is exactly <space><tab><newline>,
the
> default, then any sequence of IFS characters serves to delimit
words.
this is clear.
> If IFS has a value other than the default, then sequences of
the
> whitespace characters space and tab are ignored at the
beginning and
> end of the word, as long as the whitespace character is in the
value
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> of IFS (an IFS whitespace character).
that means, *unless the witespace character is back in the value of IFS*
> Any character in IFS
that is
> not IFS whitespace, along with any adjacent IFS whitespace
charac-
> ters, delimits a field.
I think, I got it:
IFS=":;"
var="a:;b;::c"
echo $var # a b c
Now the part that I can barely understand:
> A sequence of IFS whitespace characters is
> also treated as a delimiter. If the value of IFS is null, no
word
> splitting occurs.
>
> Explicit null arguments ("" or '') are retained. Unquoted
implicit
> null arguments, resulting from the expansion of parameters that
have
> no values, are removed. If a parameter with no value is
expanded
> within double quotes, a null argument results and is retained.
>
> Note that if no expansion occurs, no splitting is performed.
Could someone, please, expand this last part, add a few examples.
Thank you. Vitaliy.