今天尝试自己写脚本调用网易翻译 API 进行翻译,结果被 echo 命令产生的回车符害惨了。
比如,要判断一个字符串的长度,我想当然的写成了
function len()
{
echo "$*"|wc -c
}
但是这个产生的结果其实会比实际的长度多1个,就是 echo 命令产生的回车符:
len '123'
正确的实现是用 echo 的 -n
选项禁止产生最后的回车
function len()
{
echo -n "$*"|wc -c
}
len '123'
当然,就取长度来说,最好的方法是直接使用 ${#param}
来获取
function len()
{
local word="$*"
echo "${#word}"
}
len '123'
类似的,用 sha256sum 进行签名时,也犯了这个错误
echo '123' |sha256sum
echo -n '123' |sha256sum