首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >IFS变量对加双引号和不加双引号变量的区别对待

IFS变量对加双引号和不加双引号变量的区别对待

作者头像
hotarugali
发布2022-02-28 18:48:24
发布2022-02-28 18:48:24
3.9K0
举报

1. IFS(Internal Field Seprator) 变量

IFS 变量是一个特殊的环境变量,叫做内部域分隔符。IFS 环境变量定义了 bash shell 用作字段分隔符的一系列字符。如果 bash shell 在数据中看到了这些字符中的任意一个,它就会假定这表明了列表中一个新数据字段的开始。默认情况下 IFS 指定为空白符(即空格、tab 符、换行符)

2. IFS对待未加双引号的变量

比如在 bash shell 中输入以下代码:

代码语言:javascript
复制
IFS=:
_str_="hello:world"
for i in $_str_; do echo $i; done

会得到以下结果:

代码语言:javascript
复制
hello
world

原因是引用字符串变量 _str_ 没有加双引号时,Shell 在 for 语句中根据 IFS 变量将字符串 _str_ 进行切割,切割成很多个字符串,然后逐个 echo

3. IFS对待加双引号的变量

在 Shell 中输入以下代码:

代码语言:javascript
复制
IFS=:
_str_="hello:world"
for i in "$_str_"; do echo $i; done

会得到以下结果:

代码语言:javascript
复制
hello world

原因是引用字符串变量 _str_ 加了双引号时,表示将其当作一个整体来处理,IFS 不会起作用,所以上述 for 循环只会循环一次。然后 echo i 的时候由于

所以可知,在 bash shell 中输入以下代码:

代码语言:javascript
复制
IFS=:
_str_="hello:world"
for i in "$_str_"; do echo "$i"; done

会得到以下结果:

代码语言:javascript
复制
hello:world
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. IFS(Internal Field Seprator) 变量
  • 2. IFS对待未加双引号的变量
  • 3. IFS对待加双引号的变量
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档