echo 变量后立即带有字母

Ric*_*ugh 4 shell

p=$( power )
echo "Power now: ${p}W"
Run Code Online (Sandbox Code Playgroud)

印刷

Wower now: 357
Run Code Online (Sandbox Code Playgroud)

这毫无意义。这肯定是一个错误吗?

Mar*_*ler 8

\n
Wower now: 357\n
Run Code Online (Sandbox Code Playgroud)\n
\n

啊,是的,这实际上是以下序列,一个字节接一个字节

\n
P (0x50)\no (0x6f)\nw (0x77)\ne (0x65)\nr (0x72)\n  (0x20)\nn (0x6e)\no (0x6f)\nw (0x77)\n: (0x3a)\n  (0x20)\n3 (0x33)\n5 (0x35)\n7 (0x37)\njump-back-to-beginning-of-line (0x0d) ## called "carriage return", if you know typewriters\xe2\x80\xa6\nW (0x57)\n
Run Code Online (Sandbox Code Playgroud)\n

因此,您的power命令出于人类未知的原因输出357\\r(回车)。

\n

解决方案:只打印来自 的实际数字power,例如:

\n
Wower now: 357\n
Run Code Online (Sandbox Code Playgroud)\n

或更紧凑:

\n
P (0x50)\no (0x6f)\nw (0x77)\ne (0x65)\nr (0x72)\n  (0x20)\nn (0x6e)\no (0x6f)\nw (0x77)\n: (0x3a)\n  (0x20)\n3 (0x33)\n5 (0x35)\n7 (0x37)\njump-back-to-beginning-of-line (0x0d) ## called "carriage return", if you know typewriters\xe2\x80\xa6\nW (0x57)\n
Run Code Online (Sandbox Code Playgroud)\n