Unable to Set/Reset Ifs

I have Ubuntu 16.04.6 (Edit: Now updated to 16.04.7), with bash 4.3.48(1)-release (x86_64-pc-linux-gnu). I am not able to set/reset my IFS variable. I have tried to set is using the literal CTRL+V and as well. Even tried unset.

Interestingly, the behaviour the same for any other variable ($Other_IFS below).

Any pointers?

Below is the output of my attempts:

mike@laptop:~ $ cat -vte <<< $IFS 
$
mike@laptop:~ $ IFS=$' \t\n'
mike@laptop:~ $ cat -vte <<< $IFS 
$
mike@laptop:~ $ IFS="   ^M"
mike@laptop:~ $ cat -vte <<< $IFS 
$
mike@laptop:~ $ unset IFS 
mike@laptop:~ $ cat -vte <<< $IFS 
$
mike@laptop:~ $ IFS="   ^M"
mike@laptop:~ $ cat -vte <<< $IFS 
$
mike@laptop:~ $ Other_IFS="   ^M"
mike@laptop:~ $ IFS="$Other_IFS"
mike@laptop:~ $ cat -vte <<< $IFS 
$
mike@laptop:~ $ cat -vte <<< $Other_IFS 
$

Edit: (based on some of the comments, I am adding an example):

The data file: (TAB separated)

Col1    Col2    Col3
312      19     [1,1,3,2]
763       1     [2,3,0,8]
 12     104     [3,0,0,3]
150     208     [3,0,2,3]

I am sorting the file on Col1 and getting the values of Col2 and Col3 of the last entry (after sorting), in an array. Then I am printing the array values separately. Here is the command used to achieve this:

max=($(sort -t $'\t' -n -k1,1 my_file | cut -d $'\t' -f2,3 | tail -1))
echo ${max[1]}

In the above example, the output is

[2,

instead of [2,3,0,8].

At the beginning of the script, I have already added

OFS="$IFS"
IFS=$'\t'

and at the end,

IFS="$OFS"

Note On a different system (Ubuntu 20.04.1, bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)), the script is producing an expected output.

6
Elena Rostova

Elena Rostova

Lead Health, Wellness & Medical Journalist

Elena Rostova holds a Master's degree in Public Health Journalism. She covers groundbreaking medical research, holistic wellness trends, mental health awareness, and nutritional science.

Share this article