shell脚本IFS概念
一、IFS的概念
Shell 脚本中有个变量叫IFS(Internal Field Seprator) ,内部域分隔符。
Shell 的环境变量分为set, env两种,其中 set 变量可以通过 export 工具导入到 env 变量中。
其中,set 是显示设置shell变量,仅在本 shell 中有效;env 是显示设置用户环境变量 ,仅在当前会话中有效。
换句话说,set 变量里包含了env 变量,但set变量不一定都是env 变量。这两种变量不同之处在于变量的作用域不同。显然,env 变量的作用域要大些,它可以在 subshell 中使用。
IFS 是一种 set 变量,当 shell 处理"命令替换"和"参数替换"时,shell 根据 IFS 的值,默认是 space, tab, newline 来拆解读入的变量,然后对特殊字符进行处理,最后重新组合赋值给该变量
二、IFS概念实例操作
查看IFS的值发现env | grep IFS为空,而set | grep IFS有值,说明IFS是局部变量
IFS是以空格、制表符、换行符来进行分隔的
三、IFS实例操作一:设置分割符


四、介绍 IFS 、$ 、单双引号
1、单双引号赋值给IFS的对比
这三个赋值看起来都比较像”将换行符赋值给IFS“,但实际上只有最后一种写法才是我想要的结果。
IFS="\n" //将字符n作为IFS的换行符。
IFS=$"\n" //这里\n确实通过$转化为了换行符,但仅当被解释时(或被执行时)才被转化为换行符;第一个和第二个是等价的
IFS=$'\n' //这才是真正的换行符。
2、IFS=‘\n’ 的输出结果、

3、IFS=$"\n" 的输出结果

4、IFS="\n" 的输出结果

五、while read的应用
1、格式
while read 变量名
2、用法一:格式
while read 变量名(line)
do
.......
done <line
read通过输入重定向,把file的第一行所有的内容赋值给变量line,循环体内的命令一般包含对变量line的处理;
然后循环处理file的第二行、第三行...一直到file的最后一行。
read命令也有退出状态,当它从文件file中读到内容时,退出状态为0,循环继续;
当read从文件中读完最后一行后,下次便没有内容可读了,此时read的退出状态为非0,所以循环才会退出。
3、用法二:格式
command | while read line
do
.......
done
command的输出作为read的循环输入,这种结构常用于处理超过一行的输出,当然awk也很擅长。
4、实例操作

希望和悲伤,都是一缕光。总有一天,我们会再相遇。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」