Shell脚本for循环逐行原样输出

问题描述

我在写Shell脚本时遇到了这样一个问题。
需求:从文件中逐行遍历然后输出。

我的文件是这样的:
image.png
我的脚本是这样的:
image.png
我的输出是这样的:
image.png

诶?
为什么和我源文件的行数不一致呢?

解决方法

后来查资料发现:
bash shell会将下列字符当作字段分隔符:空格、制表符、换行符
如果我们想忽略掉这些分隔符,需要设IFS的变量值。
在for循环前加上这个IFS赋值操作就可以了

IFS=$'\n'
image.png

然后我们再执行一下脚本
image.png

看,现在输出的结果和我们txt文件中的格式是一样的了。
但是这样赋值会有问题,如果脚本中其他方法也用到了for循环,可能影响其他for循环的输出结果,那我们可以用这种方式给IFS赋值

IFS.OLD=$IFS #默认的IFS的数值-->也是环境变量!
IFS=$'\n' #自定义的IFS数值

<在代码中使用新的IFS值> #待使用自定义IFS的部分!
IFS=$IFS.OLD #恢复默认的IFS
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容