领导有需求,运维来完成。
需求:获取每个库里的注册数登录数,需要执行脚本1.sh login/register输出6个库登录/注册的总数,脚本如下。
好久没写shell了,把shell的数组和python的数组语法搞混了,几个注意事项记录一下。
注意事项:
python的数组是arr = (1,2,3,4,5)
shell的数组是arr=(1 2 3 4 5)
python的是用逗号分隔,shell是用空格分隔
python变量名两边都要有空格(没有也可以,一般都隔开,代码规范),shell都不能有空格(定义函数名除外)
python的if是没有[]和then的,不用fi结尾,python判断字符串相等是两个=
shell的if则需要[]和then,必须fi结尾,判断字符串是一个=
#!/bin/bash
#定义服务器地址
server=("localhost" "localhost" "localhost" "localhost" "localhost" "localhost")
#定义用户名
name=("root" "root" "root" "root" "root" "root")
#定义密码
passwd=("111111" "111111" "111111" "111111" "111111" "111111")
#定义获取登录数的sql
login_sql="select count(1) from login_tb"
#定义获取注册数的sql
register_sql="select count(1) from reg_tb"
#设置总和的值,起始是0
sum=0
#定义函数exe_func
exe_func(){
#循环几次,几个库,0-5是6个库
for i in `seq 0 5`
do
#获取库名
db_name="zuishilaoweng"
#判断是不是登录
if [ $1 = "login" ];
then
#获取每一个库里登录的数据
now_sum=`/usr/local/mysql/bin/mysql -h ${server[$i]} -D $db_name -u ${name[$i]} -p"${passwd[$i]}" -N -B -e "$login_sql"`
#判断是不是注册
elif [ $1 = "register" ];then
#获取每一个库里注册的数据
now_sum=`/usr/local/mysql/bin/mysql -h ${server[$i]} -D $db_name -u ${name[$i]} -p"${passwd[$i]}" -N -B -e "$register_sql"`
fi
#将和相加
sum=`expr $sum + $now_sum`
#结束循环
done
#打印出总数
echo $sum
}
#开始判断
case $1 in
#判断是不是登录
"login")
#获取登录的总数
login_sum=`exe_func login`
#打印信息
echo "登录的总数是: $login_sum";;
#判断是不是注册
"register")
#获取注册的总数
register_sum=`exe_func register`
#打印信息
echo "注册的总数是: $register_sum";;
*)
#打印提示信息
echo "input \"login\" or \"register\"";;
esac