a.txt的内容一共3行:
12345678
12345678
12345678

shell脚本:

for line in `cat a.txt` do    echo ${line} 'abc'done

for cat 遍历文本,用echo输入每行文字.
line=12345678
输入后果:abc45678
这个景象很奇怪,咱们想要的后果是12345678abc才对

咱们通过调试代码 echo ${#line} 能够看到,字符串line的长度是9.咱们看到的内容长度其实是8.这个景象看起来很奇怪。
为了看个到底,咱们用vim关上文件a.txt,输出:set invlist。该命令能够看到文本中的暗藏字符,例如r,t等

咱们看到,每一行结尾都有一个$符号,这个就是传统的r回车符号,找到起因,咱们就能够入手来解决:
咱们批改代码如下

for line in `cat a.txt`do    echo ${line}abc |sed 's/\r//g' |sed 's/\n//g'done

sed 命令能够把r替换成空,同时前面把n也替换一下。因为很多时候window编辑过的文件很就是带了rn。
以上是解决shell读取window编辑过的dos格局的文件开端换行符问题,咱们vim关上文件,输出:set ff? 能够看到文件格式:fileformat=dos 或者fileformat=Unix
通过:set fileformat=Unix能够转换格局
Unix格局的文本不存在以上问题。次要咱们有时候有window编辑文本的需要,又须要适应脚本读取