1、前言
由于工作需要统计一个apk的使用频率,由于用的mongodb,分组统计查询折腾一上午没弄好,干脆直接用shell一条一条跑算了
2、数组:
数组定义法1:
arr=(1 2 3 4 5)
注意是用空格分开,不是逗号!!
数组定义法2:
array
array[0]="a"
array[1]="b"
array[2]="c"
获取数组的length(数组中有几个元素):
${#array[@]}
3、遍历
遍历(For循环法):
for var in ${arr[@]};
do
echo $var
done
遍历(While循环法):
i=0
while [ $i -lt ${#arr[@]} ]
do
echo ${ arr[$i] }
let i++
done
4、向数组中添加成员
ARR[1]="item_1"
上面的方法使用了指定数组索引的方式来向数组添加多个成员,但如果不想显式指定数组索引,则可以用下面的方法来添加:
ARR+=("item_1")
5、取出数组中的一个成员
[root@localhost ~]# echo ${ARR[2]}
item_2
6、判断一个指定的字符串是否在该数组中
if echo "${ARR[@]}" | grep -w "item_1" &>/dev/null; then
echo "Found"
fi
其中,ARR是你的数组名,item_1是你要查找的字符串。
7、数组转换成字符串
arr=(v1 v2 v3 ...vn)
str=''
for i in ${arr[@]};do $str=$str$i done
echo $str
8、脚本:
#!/bin/bash
cd /usr/local/mongodb/bin/
dataname="movie"
MongoDB="./mongo 127.0.0.1:27010/$dataname -quiet"
moth=(07 08 09 10 11 12)
num=(xxx xxx xxx xxx xxx)
i=0
while [ $i -lt ${#moth[@]} ]
do
echo "${moth[$i]} moth"
ii=0
while [ $ii -lt ${#num[@]} ]
do
$MongoDB <<EOF
db.getCollection('content').find({"phone":{"\$in":['${num[$ii]}']},"createTime":{\$gte:"2017-${moth[$i]}-01 00:00:00",\$lte:"2017-${moth[$i]}-31 23:59:59"}}).count();
exit;
EOF
let ii++
done
let i++
done