IFS全拼为:Internal Field Separator. 它有三个需要记住的特点:
- IFS 是一个特殊的Shell变量
- 如果需要,你可以改变IFS的值,跟普通的变量赋值一样。e.g. IFS='|'
- IFS的默认值是<space><tab><newline>, 即空格,制表符,空行
在我们平常使用中,有两个很重要的地方会用到IFS,可能大家并没有察觉。
- 在read命令中的使用
--- read直接读的时候。read会把所有的分隔符换成空格。
--- read读取文件的时候。readf在读文件的每一行的时候都会用IFS把这一行分隔开,然后赋值给变量。注意如果需要赋值的变量个数少于分隔后的结果,则多余的不分隔。例如,“he|is|a|good|boy", 如果只有a,b,c三个变量(IFS=‘|’)则a="he", b="is", c="a|good|boy".>IFS=:; read a lei:yu >echo $a lei yu
下面是一个例子,创建一个文件名字为test.tmp,并写入以下信息。
写一个名为show_info.sh的脚本文件,内容如下:>echo "leiyu|20|female" > test.tmp >echo "xyz|19|male" >> test.tmp
#!/bin/bash while IFS='|' read -