Shell 脚本查询MySQL结果并简单做循环curl请求处理

#!/bin/bash

HOST_NAME='127.0.0.1'
DB_PORT='3306'
DB_NAME='role'   #数据库名
USER_NAME='root'
PASSWD='root'



#查询数据库并将查询结果做参数发送HTTP请求
#SQL查询结果列数
columnNum=2

#通过参数行数和行索引位置
function getValue(){
  #调用方法传入的第一个参数,$0 表示方法名

  colIndex=$1 #调用方法传入的第二个参数,表明第几行
  
  rowIndex=$2 #指定行,第几列的元素

  idx=$(($columnNum*($colIndex-1)+$rowIndex-1))
  

  #判读索引值是否大于结果行数
  #${#arrays_name[@]}获取数组长度
  if [ $idx -le ${#user_attrs[@]} ]; then
    echo ${user_attrs[$idx]} #获取目标元素
  fi
}

#获取表总行数 (包含表头)
function getRowNum(){
  rowNum=`expr $1 / $columnNum`
  echo $rowNum
}



#数据库查询结果,结果为每行从左到右每个单元格为一行(首行为SQL查询结果的列名)
#数组默认分割符号是空格,当查询结果中包含空格字符时,会导致一个字段被分割开,例如:create_time 2017-01-01 12:12:12 会变成两条 
#2017-01-01
#12:12:12
#因此,IFS=$'\t'采用tab来分割字段的值
#mysql -u 用户名 -p 密码 -h 主机host 数据库名 -e 执行脚本内容'SELECT \`id\`,\`name\` FROM user"'`
#mysql -u 用户名 -p 密码 -h 主机host 数据库名 -s -e 执行脚本内容'SELECT \`id\`,\`name\` FROM user"'` #-s 去掉表头

IFS=$'\t\n'  #分割字段

user_attrs=(`mysql -h${HOST_NAME}  -u${USER_NAME}  ${DB_NAME} -e 'SELECT \`id\`,\`name\` FROM user'`)

echo 'user_attrs = '${user_attrs}


#循环遍历查询结果行数
echo "columnNum"=$columnNum
echo "user_attrs[@]"=${#user_attrs[@]}

rowNum=`getRowNum ${#user_attrs[@]}` #获取总行数
echo "rowNum="$rowNum

#查询结果带有表头,故从第二行开始遍历
for (( i=2; i<=rowNum; i=i+1))
do
   #查询结果id为id的值,id为第一列,rowIndex传入 1

   id=`getValue $i 1`
   echo 'id='${id}

   #查询结果name为参数name的值,name为第二列,rowIndex传入 2
   #调用方法需要用``包上
   name=`getValue $i 2`
   echo 'name='${name}

   #url中含有大括号时需要转义
   url="http://api.crap.cn/visitor/example/json.do"
   
   params="{\"id\":\"$id\",\"name\":\"$name\",\"brief\":\"快速入门json参数\",\"category\":\"分类\"}"

   echo $url
   echo $params
   result=$(curl -d ${params} -H 'Content-Type: application/json' -X POST ${url})
   echo $result
   sleep 0.8
done

#${#user_attrs[@]}获取数组长度
echo "user_attrs[@]"=${#user_attrs[@]}


#打印数组结果集

for (( i=0; i<${#user_attrs[@]}; i=i+1))
do
  echo "user_attrs[${i}]"=${user_attrs[i]}
done

# 或者单个打印输出

echo "user_attrs[0]"=${user_attrs[0]}
echo "user_attrs[1]"=${user_attrs[1]}
echo "user_attrs[2]"=${user_attrs[2]}
echo "user_attrs[3]"=${user_attrs[3]}
echo "user_attrs[4]"=${user_attrs[4]}
echo "user_attrs[5]"=${user_attrs[5]}
echo "user_attrs[6]"=${user_attrs[6]}
echo "user_attrs[7]"=${user_attrs[7]}
echo "user_attrs[8]"=${user_attrs[8]}
echo "user_attrs[9]"=${user_attrs[9]}

数据库查询结果如下:

调试与执行结果如下:

分享经验给大家,供参考。

可参考:Shell bash脚本查询Mysql并简单处理查询结果 - 简书

猜你喜欢

转载自blog.csdn.net/Youning_Yim/article/details/122404793