Shell脚本遍历数据表DataSet
以下为shell脚本编写的查询Mysql数据库并遍历取值的脚本,更多问题请搜索 “shell for循环 处理数据表”。
1 #!/bin/bash 2 #author bollenv@qq.com 2018-02-05 3 #查询数据库并将查询结果做参数发送HTTP请求 4 #SQL查询结果列数 5 columnNum=2 6 #通过参数行数和行索引位置 7 function getValue(){ 8 #调用方法传入的第一个参数,$0 表示方法名 9 colIndex=$1 10 #调用方法传入的第二个参数 11 rowIndex=$2 12 #定位到指定行,数组索引0为第一个元素 13 #数学算术运算使用 $((a+b)) 14 idx=$(($columnNum*$colIndex+$rowIndex-1)) 15 #判读索引值是否大于结果行数 16 #${#arrays_name[@]}获取数组长度 17 if [ $idx -le ${#user_attrs[@]} ]; then 18 echo ${user_attrs[$idx]} 19 fi 20 } 21 #数据库查询结果,结果为每行从左到右每个单元格为一行(首行为SQL查询结果的列名) 22 #数组默认分割符号是空格,当查询结果中包含空格字符时,会导致一个字段被分割开,例如:create_time 2017-01-01 12:12:12 会变成两条 23 #2017-01-01 24 #12:12:12 25 #因此,IFS=$'\t'采用tab来分割字段的值 26 #mysql -u 用户名 -p 密码 -h 主机host 数据库名 -e 执行脚本内容 27 IFS=$'\t' 28 user_attrs=(`mysql -udb_user -pdb_pwd -hdb_host dbname -e 'SELECT \`city_name\`,\`name\` FROM t_user"'`) 29 #循环遍历查询结果行数 30 for (( i=$columnNum; i<=${#user_attrs[@]}; i=i+1)) 31 do 32 #查询结果name为参数name的值,name为第二列,rowIndex传入 2 33 #调用方法需要用``包上 34 name=`getValue $i 2` 35 #查询结果city_name为city_name的值,city_name为第一列,rowIndex传入 1 36 city_name=`getValue $i 1` 37 #url中含有大括号时需要转义 38 url="https://api.yourdomain.com/api/register?params=\{\"name\":\"$name\",\"city_name\":\"$city_name\"}" 39 echo $url 40 result=$(curl -X GET $url) 41 echo $result 42 sleep 0.8 43 done
参考:
没有坚守就没有事业,没有执着就没有未来!
浙公网安备 33010602011771号