shell IFS 配合 read 读文件
参考《linux shell核心编程指南》3.5 ,无需仔细阅读,可以当做工具书使用。
在Shell中使用内部变量IFS(Internal Field Seprator)来决定项目列表或值列表的分隔符,IFS的默认值为空格、Tab制表符或换行符。使用for循环读取项目列表或值列表时,就会根据IFS的值判断列表中值的个数,最终决定循环的次数。例如,A="hello the world",当使用空格作分隔符时,变量A的值有三列。但是,当使用字母t作为分隔符时,变量A的值就有两列。所以当使用不同的分隔符时读取数据的结果也会有很大差别,这点在编写脚本时一定要注意!IFS的多个值之间是“或”关系,所以for循环在读取列表时,数据可以使用空格分隔,或使用Tab制表符分隔,或使用换行符对数据进行分隔。因为空格、Tab制表符和换行符都属于ASCII码表中的控制字符,是不可显示的内容,所以正常使用echo命令显示该变量的值时,是看不到内容的,但是可以通过od命令将数据转换为八进制数据后再查看。
#!/bin/bash while IFS=":" READ user pass uid gid info home shell do echo "heihei" done < /etc/passwd
上面的可以联想到cat, 使用<<符号可以将数据内容重定向传递给前面的一个命令,作为命令的输入。
cat > 1.txt << EOF echo "hello" EOF
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析