Answers:
echo
\n
在行尾打印换行符()
echo abcd | xxd
0000000: 6162 6364 0a abcd.
在某些echo
实现中,您可以使用-n
:
-n
不输出尾随换行符
并测试:
echo -n abcd | wc -c
4
对于其他一些,您需要\c
转义序列:
\c
:抑制<newline>
在输出中最后一个参数之后的。'\c'
参数后面的所有字符都将被忽略。
echo -e 'abcd\c' | wc -c
4
可移植地使用printf
:
printf %s abcd | wc -c
4
(请注意,wc -c
字节是计数字节,而不是字符(尽管abcd
它们通常等效)。wc -m
用于计数字符)。
echo
实现(至少是所有Unix兼容的实现)仅echo 'abcd\c'
是输出abcd
。echo -e 'abcd\c'
在Unix兼容的echo
实现中将输出-e abcd
。
如果echo
不带-n
选项运行,它将在参数后写入换行符。否则,如果键入echo foo
,则下一个shell提示将出现在的右侧foo
。wc
计数换行符也是如此 。
如何防止
echo
打印出来?
echo -n abcd | wc -c
默认情况下,echo
将在字符串后打印换行符(\n
)(这就是为什么您在下一行而不是在abcd
打印的同一行看到shell提示的原因。)
您可以尝试添加-n
参数echo
以禁用尾随换行符。
echo -n abcd | wc -c
4
printf
优于echo
?