1.概述
在bash中,IFS(Internal Filed Separator,内部域分隔符)是一种 set 变量,当 shell 处理字符串时,shell会根据 IFS 的值,默认是空格、Tab键、换行来解析读入的变量,然后对特殊字符进行处理,最后重新组合赋值给该变量。
2.使用范围
在echo、cat、awk时,IFS会影响对字段的分割
所以在输出某些含有IFS值对应的字段时,会截断输出。又不能达到自己想要的效果时,就需要修改IFS值。如某字段含有空格,而输出打印时,不想截断空格前后字符,做为两个字符,就需要用到重新设置IFS值
3.用法
3.1创建一个test.txt文件,文件内容如下
apple banana pear
watermelon grape
3.2在shell中修改IFS,达到一行一行的输出
#在修改IFS前,保留原IFS
IFS_OLD=$IFS
#设置换行为内部域分隔符
IFS='\n'
for line in `cat test.txt`
do
echo ${line}
done
#在shell结束前,还原IFS
IFS=$IFS_OLD
exit 0
3.2输出效果:
apple banana pear
watermelon grape