bash命令行append到变量将改为prepend



在shell脚本中,我通常会在变量后面附加一个字符串,并以"${variable}end"结尾。然而,我有一个文件"file.txt",我希望在其中所有行都用"end"结尾。因此,我在命令行中执行,例如for i in `cat file.txt`; do echo "${i} end"; done。但是单词"end"(加上空格(不会被追加,而是被追加。当我使用while循环时也会发生同样的事情。有人能告诉我那里发生了什么事吗?我在LinuxMint13 64位(包括Cinammon和Mate(上使用GNUbash版本4.2.37。

谢谢你的帮助!

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

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

这可能只是您的语法-不要忘记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

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

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

最新更新