2013-08-06 90 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或其他方法修復。