bash计数

By | 2020-04-06
在统计数据的时候发现一直出错:)syntax error: invalid arithmetic operator (error token is “
原因是变量中还有特殊字符,如本来$cnt是5的,实际上却是5\r。将\r这种特殊字符去掉即可:${cnt//$’\r’}
完整bash脚本:用法(./search.sh file string)
#! /bin/bash
echo “file:” $1 string: $2
sum=0
grep “$2” $1 | while read line
do
     idx=$((${#line}-2))
     cnt=${line:$idx}
     cnt=”${cnt//$’\r’}”
     sum=$((sum+cnt))
     echo $sum
done
echo $sum
注意:最后一个echo出来的sum是0,这是因为使用管道后,关联数据作用域会丢失,原因是在bash shell中管道是新起了一个进程