我正在编写一个 Bash 脚本,某个变量中包含的字符串的长度是我的条件之一。当前字符串是W5u7TBTzF17GGFV8DBJHvgAAAAI
。最初,我借助以下方法计算字符串长度wc -c
:
$ VAR='W5u7TBTzF17GGFV8DBJHvgAAAAI'; echo "$VAR" | wc -c
28
但我的脚本条件[[ ${#VAR} -eq 28 ]]
始终没有通过。然后我决定逐个数一下字符。事实上,字符串长度是 27 个字符,的值也是${#VAR}
27:
$ echo "${#VAR}"
27
所以我很好奇——这种差异从何而来?
答案1
这是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
选项。