Since you use
$odi_cluster unquoted in the call to
echo, the shell will split the variable's value on any character that also occur in
$IFS (and then perform filename globbing on the generated words). Ordinarily,
$IFS contains a space, a tab character, and a newline, but you've re-set it to be a comma.
If the variable's value is
$IFS contains a comma, this splitting results in the two words
odi_server2. These will be given to
echo as two separate arguments and
echo utility will output these with a separating space.
To avoid letting
IFS have any effect on the output, prevent the shell from splitting the variable's value by quoting the expansion:
printf '%s\n' "$odi_cluster"
Note that you may set the
IFS variable for only the
read built-in utility by invoking
IFS=, read ...
This avoids setting
IFS to a non-default value for the rest of the script.
Possibly also related:
Also note that the characters
! of the
#!-line must be the very first characters of the file, and that you don't need to end each statement with a
; unless there are further statements on the same line.