Bash更新问题

时间:2013-08-06 19:10:21

标签: bash ubuntu scripting

我有Ubuntu 12.04和3.2.0-49通用内核。

最多3天前,我在使用Bash Scripting工作得很好。昨天我做了apt-get更新和升级,从那时起我就遇到了bash脚本问题。有人知道是否引入了新的bug吗?或者如果我尝试调用的命令有任何更改?

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

逗号出现在开头而不是我预期的结尾。我不知道新的bash版本是否有问题,但我想是的。

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

正如我所说,所有这一切都在3天前发挥作用。

2 个答案:

答案 0 :(得分:2)

file.txt似乎包含DOS行结尾,这会导致光标在打印$line的值之后但在打印逗号之前移动到行的开头。使用dos2unix删除它们。此外,您应该使用read命令和while循环遍历文件,因为对于包含空格的行,您的当前方法将失败:

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

请注意,这与您正在使用的bash版本无关。

答案 1 :(得分:0)

您的文件file.txt有CRLF(DOS)行结尾的可能性很高。也许您从Windows计算机复制了该文件。修复了dos2unixtrvim或其他各种方法。