2013-08-06 33 views
0

我有3.2.0-49-通用内核的Ubuntu 12.04。Bash更新问题

3天前,我在Bash脚本中工作正常。昨天我做了一个apt-get更新和升级,从那以后我一直有问题与bash脚本。有谁知道是否引入了新的错误?或者,如果我尝试调用的命令有任何更改?

for line in `cat file.txt`;do echo " $line,";done 

逗号出现在开始的结尾,不像我期望的那样结束。我不知道新的bash版本是否有问题,但我想是的。

如果我在$line之前没有放置空格,bash会删除该行的第一个字符。

正如我所说,这一切都在3天前工作。

回答

2

看起来file.txt包含DOS行结束符,它会在打印逗号之前打印$line的值后导致光标移动到行的开头。使用dos2unix删除它们。此外,你应该遍历使用read命令和while环文件,因为当前的方法会包含空格的行失败:

while read -r line; do 
    echo " $line," 
done < file.txt 

注意,这都不是什么做的bash的版本,你正在使用。

+0

非常感谢,即时通讯在这上面,我不知道格式,我准备了解了dos2unix及其作品,谢谢.... – Pseudoweb

0

您的文件file.txt具有CRLF(DOS)行尾的机会很高。也许你是从Windows机器上复制文件的。用dos2unix,tr,vim或其他方法修复。