IFS的全名为Internal Field Separator,用来在变量扩展后进行单词分割,其默认值是
。可以通过cat -etv <<<"$IFS"来查看。IFS变量通常与read命令、参数扩展 以及命令替换一起使用。
bash的man page中这样写道:
shell把IFS中的每个字符都看做一个分隔符,并用它们来将参数扩展的结果切分成word。如果IFS没有设置,或者设置为默认值,那么先前扩展的结果中,开始和末尾的空白符序列会被忽略,而其他的没有在开始和末尾的IFS字符序列用来分割word。如果IFS中含有非字符,那么位于word开头的空白符会被忽略,只要这些空白符包含在IFS的值中;IFS中的任何非空白符连同相邻的空白符划分一个field。IFS空白符序列也被当做一个分隔符。如果IFS是null,则不会进行分割。
总结:
1)IFS中的字符可以分为两类:空白符()和非空白符,两者的用法有区别:开头和结尾的空白符会被忽略,儿非空白符不能被忽略;连续的空白符被当做一个分隔符,而连续的非空白符被当做多个分隔符。
2)一个非空白符连同其相邻的空白符序列一起构成一个分隔符。
尊重原创!
阅读(1376) | 评论(0) | 转发(0) |