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/bash OLD_IFS=${IFS}
IFS="" for line in `cat ${1}`
do
echo ${line}
done IFS=${OLD_IFS}
4. 其他
ref
- SHELL 读取文件的每一行内容并输出
- 用 while 输出, 貌似就没有这个问题...
- Shell中IFS用法
- SHELL 读取文件的每一行内容并输出
疑问
- IFS 这玩意到底是什么鬼
- ${1} 是 bash 脚本的参数, 如果说, 脚本里有了 awk 命令, 需要引用 $1, 到底是哪个为准呢?