在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