我有 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]
我正在对文件进行排序,并在数组中获取最后一个条目(排序后)的值。然后我分别打印数组值。以下是用于实现此目的的命令Col1
:Col2
Col3
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)
)上,该脚本正在产生预期的输出。