关于Linux:在bash脚本中,oifs=$ifs;ifs=””的含义是什么?

 2019-05-06 

What is the meaning of OIFS=$IFS; IFS=“|”; in bash script

本问题已经有最佳答案,请猛点这里访问。

我试图理解一个测试脚本,其中包括以下部分:

1
2
OIFS=$IFS;
IFS="|";


这里的oifs是一个用户定义的变量,用于备份当前的bash内部字段分隔符值。

然后将内部字段分隔符变量设置为用户定义的值,可能会启用某种依赖于它的分析/文本处理算法,并在脚本的某个地方还原为其原始值。


IFS是内部字段分隔符。在保存旧值之后,代码段将IFS更改为"",以便以后可以还原它。

例子:

1
2
3
4
5
6
->array=(one two three)
->echo"${array[*]}"
one two three
->IFS='|'
->echo"${array[*]}"
one|two|three


在shell中,当我们需要访问变量的值时,我们使用$variableName,当我们需要为变量赋值时,我们使用variableName=xxx。因此:

1
2
3
4
5
# here we assigning the value of $IFS(Internal Field Separator) in OIFS.
OIFS=$IFS;
# and here we are re-assigning some different value to IFS.
# it's more like, first we store old value of IFS variable and then assign new value to it. So that later we can use the old value if needed.
IFS="|";