无法设置/重置 IFS

无法设置/重置 IFS

我有 Ubuntu 16.04.6 (编辑:现已更新至 16.04.7),使用 bash 4.3.48(1)-release (x86_64-pc-linux-gnu)。我无法设置/重置我的 IFS 变量。我尝试过使用文字 CTRL+V 进行设置。甚至尝试过unset

$Other_IFS有趣的是,对于任何其他变量(如下),其行为都是相同的。

有什么指点吗?

以下是我尝试的输出:

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 
$

编辑:根据一些评论,我添加了一个例子):

数据文件:(TAB 分隔)

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]

我正在对文件进行排序,并在数组中获取最后一个条目(排序后)的值。然后我分别打印数组值。以下是用于实现此目的的命令Col1Col2Col3

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

在上面的例子中,输出是

[2,

代替[2,3,0,8]

在脚本的开头,我已经添加了

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

最后,

IFS="$OFS"

笔记 在不同的系统(Ubuntu 20.04.1, bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu))上,该脚本正在产生预期的输出。

相关内容