当我计算 Linux 中的字符数时, wc -c 与 ${#} 有什么不同?

dis*_*231 3 bash wc

echo $SHELL
/bin/bash

echo $SHELL | wc -c
10

echo ${#SHELL}
9 
Run Code Online (Sandbox Code Playgroud)

$SHELL(eg /bin/bash) 中的字符数是 9,那么为什么使用时结果是 10wc -c呢?

Ben*_*ley 5

这是因为echo. 当你输入:

$ echo $SHELL
/bin/bash
$
Run Code Online (Sandbox Code Playgroud)

echo打印一个换行符,该字符计入wc字符数。

另一方面${#SHELL}壳扩展。由于echo还没有实际运行,shell 使用没有额外换行符的扩展来执行字符计数。所以echo ${#SHELL}实际上转化为echo 9. 将9印刷有由添加了尾随新行echo