Shell中的数组定义
young / / / 阅读量

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
支付宝捐赠
请使用支付宝扫一扫进行捐赠
微信捐赠
请使用微信扫一扫进行赞赏
有 0 篇文章