当我 时echo $something >> file.txt
,一个新行将会被附加到文件中。
如果我想附加而不添加新行该怎么办?
答案1
这就是echo -n
的目的。
答案2
printf
非常灵活,而且比 更易于移植echo
。与 C/Perl/etc 实现类似,如果不使用 终止格式字符串,\n
则不会打印换行符:
printf "%s" "$something" >> file.txt
答案3
如果您使用命令的输出,则可以将 xargs 与 echo 结合使用
/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
答案4
tr
是另一种选择。
如果您使用echo
作为输入,您可以摆脱哪个tr -d '\n'
。
此技术在通过管道传输其他命令的输出时也有效(只有一行输出)。此外,如果您不知道文件是否具有 UNIX 或 DOS 行尾,您可以使用tr -d '\n\r'
。
这里有一些测试表明这是有效的。
包含换行符:
something='0123456789' ; echo ${something} | wc -c
11
UNIX 换行符:
something='0123456789' ; echo ${something} | tr -d '\n\r' | wc -c
10
DOS 风格:
something='0123456789' ; echo ${something} | unix2dos | tr -d '\n\r' | wc -c
10
tr
使用 BSD和 GNU测试tr
。