2013-02-26 74 views
0

在shell脚本中我通常会在“$ {variable} end”后面附加一个字符串给变量。但是,我有一个文件“file.txt”,我希望所有行都被“结尾”附加。所以我的命令行,例如,for i in `cat file.txt`; do echo "${i} end"; done。但“结束”一词(加上空格)不会被追加,而是附加。同样的事情发生在我使用while循环时。有人能告诉我那里发生了什么事吗?我在LinuxMint13 64bit(Cinammon和Mate)上使用GNU bash 4.2.37版本。bash命令行附加到变量将预先替代

谢谢你的帮助!

+1

那是什么意思? – chepner 2013-02-26 20:21:26

回答

0

它可能只是你的语法 - 别忘了do。那就是:

for i in `cat file.txt`; do echo "${i} end"; done 

如果你问如何使追加到每行“结束”的新文件,试试这个:

for i in `cat file.txt`; do echo "${i} end" >> some_new_file; done 
+1

不要使用'for in cat file'而是使用'while read do ... done 2013-02-26 20:03:03

+0

嗨Matt,我很抱歉,我没有忘记这个(只是我的帖子有错误):/ – 2013-02-26 21:36:45

1

你应该使用while循环,而不是为循环,as explained here

while IFS= read -r line 
do 
    echo "$line end" 
done < "file.txt" 
+0

嗨,没有抱歉,我忘了添加我也尝试了一段时间循环,太! – 2013-02-26 21:36:07

+0

我可以提供一个截图。我很困惑这个 – 2013-02-26 21:39:40

+0

@WayneJhukie请注意'$ line'没有括号。否则,我不知道为什么它不起作用。 – 2013-02-27 15:09:07

0

正在使用循环唯一的选项?如果你想要做的就是将一些东西附加到每一行的末尾,它可能更容易使用sed“ [...]不会被追加但附加”

sed -ie 's/.*/& end/' file.txt