0

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

感谢您的任何帮助!

4

3 回答 3

1

您应该使用 while 循环而不是 for 循环,如此处所述

while IFS= read -r line
do
    echo "$line end"
done < "file.txt"
于 2013-02-26T20:06:40.197 回答
0

使用循环是唯一的选择吗?如果您只想在每一行的末尾附加一些内容,那么它可能更容易使用sed

sed -ie 's/.*/& end/' file.txt
于 2013-02-26T22:31:42.230 回答
0

这可能只是您的语法 - 不要忘记do. 那是:

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

如果您要询问如何创建一个新文件,并在每行附加“end”,请尝试以下操作:

for i in `cat file.txt`; do echo "${i} end" >> some_new_file; done
于 2013-02-26T20:00:17.160 回答