2

Per Greg's Wiki the IFS variable is used:

  • In the read command, if multiple variable-name arguments are specified, IFS is used to split the line of input so that each variable gets a single field of the input.
  • When performing WordSplitting on an unquoted expansion, IFS is used to split the value of the expansion into multiple words.
  • When performing the "$*" or "${array[*]}" expansion,the first character of IFS is placed between the elements in order to construct the final output string.
  • When doing "${!prefix*}", the first character of IFS is placed between the variable names to make the output string.
  • IFS is used by complete -W under programmable completion

So my question is, why should IFS have to come into play in variable assignment? Per the below, bash is applying word-splitting on the string on the right(a:b:c:d).

$ IFS=: s=a:b:c:d $ echo $s a b c d 

    1 Answer 1

    4

    It doesn't. You need to quote properly. Word splitting is applied to unquoted expansions according to the value of IFS. The problem is your echo command, not the assignment.

     $ ( IFS=: s=a:b:c:d typeset -p s ) declare -- s="a:b:c:d" 
    0

      You must log in to answer this question.

      Start asking to get answers

      Find the answer to your question by asking.

      Ask question

      Explore related questions

      See similar questions with these tags.