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?