use*_*050 14 echo text-processing wc
跑步时
echo abcd | wc -c
Run Code Online (Sandbox Code Playgroud)
它返回5。
但是这个词abcd只有4个字符长。
被echo打印的字经过一些特殊字符abcd?
我可以阻止echo打印吗?
Bab*_*aba 24
echo\n在行尾打印换行符 ( )
echo abcd | xxd
0000000: 6162 6364 0a abcd.
Run Code Online (Sandbox Code Playgroud)
对于某些echo实现,您可以使用-n:
-n不输出尾随换行符
并测试:
echo -n abcd | wc -c
4
Run Code Online (Sandbox Code Playgroud)
对于其他一些,您需要\c转义序列:
\c: 抑制<newline>输出中的最后一个参数。'\c'参数中之后的所有字符都将被忽略。
echo -e 'abcd\c' | wc -c
4
Run Code Online (Sandbox Code Playgroud)
便携地,使用printf:
printf %s abcd | wc -c
4
Run Code Online (Sandbox Code Playgroud)
(请注意,wc -c计算字节数,而不是字符数(尽管abcd它们通常是等效的)。wc -m用于计算字符数)。
如果您在echo没有-n选项的情况下运行,它会在参数后写入一个换行符。否则,如果您键入echo foo,您的下一个 shell 提示将出现在foo. wc计算换行符也是如此 。
我怎样才能防止
echo打印它?
echo -n abcd | wc -c
Run Code Online (Sandbox Code Playgroud)