IFS简单说明

发布日期:2018-02-24    浏览次数:945

bash下的很多命令都会分割单词,绝大多数时候默认是采用空格作为分隔符,有些时候遇到制表符、换行符也会进行分隔。最典型的是"for i in a b c",它会分割变量列表"a b c"使其成为三个变量。这种分隔符是由IFS变量指定的。

IFS是bash内部字段分隔符的环境变量。

[root@xuexi ~]# set | grep IFS
IFS=$' \t\n'

默认的IFS在碰到空格、制表符\t和分行符\n就会自动分隔进入下一步。但是对空格处理有点不一样,对行首和行尾两边的空格不处理,并且多个连续的空格默认当作一个空格。

有些时候在编写脚本或执行循环的时候,修改IFS可以起很大作用。如果要修改IFS,最好记得先备份系统IFS,再需要的地方再还原IFS。

例如:

[root@xuexi ~]# data="name,sex,rollno,location" [root@xuexi ~]# oldIFS=$IFS  # 备份IFS到变量oldIFS

[root@xuexi ~]# IFS=$',' # 将IFS设置为逗号,便于做data的分隔符

[root@xuexi ~]# for item in $data;do echo Item:$item;done Item:name
Item:sex
Item:rollno
Item:location
[root@xuexi ~]# IFS=$oldIFS  # 最后将IFS还原

可以看到,上面的示例将默认分隔符设置为了逗号后,不用处理data变量就可以轻松划分字段了。

大多数时候,有需要划分的地方都会采用IFS的第一个字符作为分隔符,但并不总是如此,具体有哪些命令会使用IFS划分,以及使用IFS的哪部分划分,可以查找man bash。

 

回到Linux系列文章大纲:http://www.wyxxw.cn/blog-detail-22-25-555
回到网站架构系列文章大纲:http://www.wyxxw.cn/blog-detail-22-25-671
回到数据库系列文章大纲:http://www.wyxxw.cn/blog-detail-22-25-670

本文网址:https://www.wyxxw.cn/blog-detail-22-25-585.html

返回列表

非特殊说明,本文版权归原作者所有,转载请注明出处

提示:本站所有资源仅供学习与参考,请勿用于商业用途。图片来自互联网~如侵犯您的权益,请联系QQ:1067507709.

提示:转载请注明来自:http://www.cnblogs.com/f-ck-need-u/p/7402137.html 。 转载人:momo