0

我有带有 3.2.0-49-generic 内核的 Ubuntu 12.04。

直到 3 天前,我还在使用 Bash 脚本。昨天我进行了apt-get更新和升级,从那以后我一直遇到 bash 脚本问题。有人知道是否引入了新错误吗?或者,如果我尝试调用的命令有任何更改?

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

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

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

正如我所说,所有这些都在 3 天前起作用。

4

2 回答 2

2

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

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

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

于 2013-08-06T19:15:38.700 回答
0

file.txt您的文件具有 CRLF (DOS) 行结尾的可能性很高。也许您从 Windows 机器上复制了文件。dos2unix用、trvim其他各种方法修复。

于 2013-08-06T19:28:37.537 回答