为什么’echo $ VAR |的输出之间存在差异 wc -c’和’echo $ {#VAR}’?
我正在研究一个Bash脚本,某个变量中包含的字符串长度是我的条件之一。 当前字符串是W5u7TBTzF17GGFV8DBJHvgAAAAI
。 最初我在wc -c
的帮助下计算字符串长度:
$ VAR='W5u7TBTzF17GGFV8DBJHvgAAAAI'; echo "$VAR" | wc -c 28
但我的脚本条件[[ ${#VAR} -eq 28 ]]
永远不会通过。 然后我决定将字符计算在一个。 实际上字符串长度是27个字符, ${#VAR}
的值也是27:
$ echo "${#VAR}" 27
所以我在想 – 这种差异来自哪里?
这是echo
工作的方式。 现在做
echo koko
你得到
georgek@georgek-HP-Pavilion-17-Notebook-PC:~$ echo koko koko
但是echo -n koko
,你得到
georgek@georgek-HP-Pavilion-17-Notebook-PC:~$ echo -n koko kokogeorgek@georgek-HP-Pavilion-17-Notebook-PC:~$
所以wc
也在捕捉newline character
。 使用
echo -n "${VAR}" | wc -c
获得理想的结果。 echo
命令将添加newline
,以便进行计数。 要删除它并获得实际计数,请使用-n
选项。