IFS变量对加双引号和不加双引号变量的区别对待
1. IFS(Internal Field Seprator) 变量
IFS变量是一个特殊的环境变量,叫做内部域分隔符。IFS环境变量定义了bash shell用作字段分隔符的一系列字符。如果bash shell在数据中看到了这些字符中的任意一个,它就会假定这表明了列表中一个新数据字段的开始。
2. IFS对待未加双引号的变量
比如在Shell中输入以下代码:
IFS=: _str_="hello:world" for i in $_str_; do echo $i; done
会得到以下结果:
hello world
原因是引用字符串变量$_str_没有加双引号时,Shell在for语句中根据IFS变量将字符串$_str_进行切割,切割成很多个字符串,然后逐个echo $i输出。
2. IFS对待加双引号的变量
在Shell中输入以下代码:
IFS=: _str_="hello:world" for i in "$_str_"; do echo $i; done
会得到以下结果:
hello world
原因是引用字符串变量$_str_加了双引号时,表示将其当作一个整体来处理,IFS不会起作用,所以上述for循环只会循环一次。然后echo $i的时候由于$i未加双引号,故被IFS切割,但由于echo将其一起输出,故在同一行上。
所以可知,在Shell中输入以下代码:
IFS=: _str_="hello:world" for i in "$_str_"; do echo "$i"; done
会得到以下结果:
hello:world
相关推荐
懒人的小窝 2020-06-14
84593973 2020-06-05
liushun 2020-05-26
xiaoxiaoniaoer 2020-04-26
luckymaoyy 2020-01-29
酷云的csdn 2020-01-10
hanshangzhi 2020-01-07
thekenofDIS 2013-09-20
李高峰 2019-11-05
Mr欢先生 2014-07-08
linuxwcj 2019-07-11
pixel 2019-03-20
青松 2019-04-23
maoyongfan 2019-08-23
huha 2017-05-09
刘涛 2011-07-17
hanjinping 2011-06-04
JavaLab 2011-05-02
雪糕 2010-05-21