2012-03-01 08:25:33 +0000 2012-03-01 08:25:33 +0000
84
84

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

当我echo $something >> file.txt时,会有一行新的行被追加到文件中。

如果我想在没有新行的情况下进行追加怎么办?

答案 (4)

98
98
98
2012-03-01 08:28:15 +0000

这就是echo -n的作用。

42
42
42
2012-03-01 14:42:29 +0000

printf 是非常灵活的,比echo更具可移植性。就像C/Perl/etc的实现一样,如果你没有用\n结束格式字符串,那么就不会打印新行:

printf "%s" "$something" >> file.txt
```。
7
7
7
2016-12-14 07:52:48 +0000

如果你使用的是命令的输出,你可以将xargs与echo

/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
```结合使用。
0
0
0
2017-05-11 11:41:20 +0000

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

经BSD tr和GNU tr测试。