bash命令行追加到变量将改为添加

时间:2013-02-26 19:57:02

标签: bash variables loops for-loop append

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

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

您应该使用while循环而不是for循环as explained here

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

答案 1 :(得分:0)

这可能只是你的语法 - 不要忘记do。那就是:

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

如果您正在询问如何使用&#34;结束&#34;附加到每一行,试试这个:

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

答案 2 :(得分:0)

使用循环是唯一的选择吗?如果你想做的就是在每一行的末尾添加一些东西,那么使用sed可能更容易:

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