我如何回显 $something >> file.txt 而不回车?

我如何回显 $something >> file.txt 而不回车?

当我 时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

相关内容