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