1. 概述
- for 循环读取文件内容时, 输出被打得稀碎
2. 场景
- 需求
- 读入文件
- 逐行显示
源文件
Continuous Delivery with Docker and Jenkins Jenkins 2 Up and Running Jenkins 2.x Continuous Integration Cookbook(3rd) Jenkins Fundamentals
脚本
#!/bin/bash for line in `cat ${1}` do echo ${line} done
- 问题
输出的结果, 是这样的
Continuous Delivery with Docker and Jenkins Jenkins 2 Up and Running Jenkins 2.x Continuous Integration Cookbook(3rd) Jenkins Fundamentals
3. 解决
- 原因
- 输出前, 需要制定 ifs
- ifs
- linux 的环境变量
- 略
最终脚本
```
#!/bin/bashOLD_IFS=${IFS}
IFS=""for line in
cat ${1}
do
echo ${line}
doneIFS=${OLD_IFS}
```
4. 其他
- ref
- SHELL 读取文件的每一行内容并输出
- 用 while 输出, 貌似就没有这个问题...
- Shell中IFS用法
- SHELL 读取文件的每一行内容并输出
- 疑问
- IFS 这玩意到底是什么鬼
- ${1} 是 bash 脚本的参数, 如果说, 脚本里有了 awk 命令, 需要引用 $1, 到底是哪个为准呢?