我有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天前发挥作用。
答案 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计算机复制了该文件。修复了dos2unix
,tr
,vim
或其他各种方法。