找回密码
 注册
查看: 1150|回复: 0

[问题解决] Shell 脚本查询MySQL结果并简单做循环curl请求处理

[复制链接]
Yimning 发表于 2022-1-24 16:30:27 | 显示全部楼层 |阅读模式

  1. #!/bin/bash



  2. HOST_NAME='127.0.0.1'

  3. DB_PORT='3306'

  4. DB_NAME='role'   #数据库名

  5. USER_NAME='root'

  6. PASSWD='root'



  7. #查询数据库并将查询结果做参数发送HTTP请求

  8. #SQL查询结果列数

  9. columnNum=2



  10. #通过参数行数和行索引位置

  11. function getValue(){

  12.   #调用方法传入的第一个参数,$0 表示方法名



  13.   colIndex=$1 #调用方法传入的第二个参数,表明第几行

  14.   

  15.   rowIndex=$2 #指定行,第几列的元素



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

  17.   



  18.   #判读索引值是否大于结果行数

  19.   #${#arrays_name[@]}获取数组长度

  20.   if [ $idx -le ${#user_attrs[@]} ]; then

  21.     echo ${user_attrs[$idx]} #获取目标元素

  22.   fi

  23. }



  24. #获取表总行数 (包含表头)

  25. function getRowNum(){

  26.   rowNum=`expr $1 / $columnNum`

  27.   echo $rowNum

  28. }







  29. #数据库查询结果,结果为每行从左到右每个单元格为一行(首行为SQL查询结果的列名)

  30. #数组默认分割符号是空格,当查询结果中包含空格字符时,会导致一个字段被分割开,例如:create_time 2017-01-01 12:12:12 会变成两条

  31. #2017-01-01

  32. #12:12:12

  33. #因此,IFS=$'\t'采用tab来分割字段的值

  34. #mysql -u 用户名 -p 密码 -h 主机host 数据库名 -e 执行脚本内容'SELECT \`id\`,\`name\` FROM user"'`

  35. #mysql -u 用户名 -p 密码 -h 主机host 数据库名 -s -e 执行脚本内容'SELECT \`id\`,\`name\` FROM user"'` #-s 去掉表头



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



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



  38. echo 'user_attrs = '${user_attrs}





  39. #循环遍历查询结果行数

  40. echo "columnNum"=$columnNum

  41. echo "user_attrs[@]"=${#user_attrs[@]}



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

  43. echo "rowNum="$rowNum



  44. #查询结果带有表头,故从第二行开始遍历

  45. for (( i=2; i<=rowNum; i=i+1))

  46. do

  47.    #查询结果id为id的值,id为第一列,rowIndex传入 1



  48.    id=`getValue $i 1`

  49.    echo 'id='${id}



  50.    #查询结果name为参数name的值,name为第二列,rowIndex传入 2

  51.    #调用方法需要用``包上

  52.    name=`getValue $i 2`

  53.    echo 'name='${name}



  54.    #url中含有大括号时需要转义

  55.    url="http://api.crap.cn/visitor/example/json.do"

  56.    

  57.    params="{"id":"$id","name":"$name","brief":"快速入门json参数","category":"分类"}"



  58.    echo $url

  59.    echo $params

  60.    result=$(curl -d ${params} -H 'Content-Type: application/json' -X POST ${url})

  61.    echo $result

  62.    sleep 0.8

  63. done



  64. #${#user_attrs[@]}获取数组长度

  65. echo "user_attrs[@]"=${#user_attrs[@]}





  66. #打印数组结果集



  67. for (( i=0; i<${#user_attrs[@]}; i=i+1))

  68. do

  69.   echo "user_attrs[${i}]"=${user_attrs[i]}

  70. done



  71. # 或者单个打印输出



  72. echo "user_attrs[0]"=${user_attrs[0]}

  73. echo "user_attrs[1]"=${user_attrs[1]}

  74. echo "user_attrs[2]"=${user_attrs[2]}

  75. echo "user_attrs[3]"=${user_attrs[3]}

  76. echo "user_attrs[4]"=${user_attrs[4]}

  77. echo "user_attrs[5]"=${user_attrs[5]}

  78. echo "user_attrs[6]"=${user_attrs[6]}

  79. echo "user_attrs[7]"=${user_attrs[7]}

  80. echo "user_attrs[8]"=${user_attrs[8]}

  81. echo "user_attrs[9]"=${user_attrs[9]}



复制代码


数据库查询结果如下:

调试与执行结果如下:

调试与执行结果如下:


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


具体请参见的我的博客:&#8203;
https://blog.csdn.net/Youning_Yim/article/details/122404793




&#8203;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|Linux公社论坛

GMT+8, 2023-6-10 23:01 , Processed in 0.062500 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表