
IFS 变量是一个特殊的环境变量,叫做内部域分隔符。IFS 环境变量定义了 bash shell 用作字段分隔符的一系列字符。如果 bash shell 在数据中看到了这些字符中的任意一个,它就会假定这表明了列表中一个新数据字段的开始。默认情况下 IFS 指定为空白符(即空格、tab 符、换行符)。
比如在 bash shell 中输入以下代码:
IFS=:
_str_="hello:world"
for i in $_str_; do echo $i; done会得到以下结果:
hello
world原因是引用字符串变量 _str_ 没有加双引号时,Shell 在 for 语句中根据 IFS 变量将字符串 _str_ 进行切割,切割成很多个字符串,然后逐个 echo
在 Shell 中输入以下代码:
IFS=:
_str_="hello:world"
for i in "$_str_"; do echo $i; done会得到以下结果:
hello world原因是引用字符串变量 _str_ 加了双引号时,表示将其当作一个整体来处理,IFS 不会起作用,所以上述 for 循环只会循环一次。然后 echo i 的时候由于
所以可知,在 bash shell 中输入以下代码:
IFS=:
_str_="hello:world"
for i in "$_str_"; do echo "$i"; done会得到以下结果:
hello:world