我的第一个shell脚本

原创 2017年01月03日 20:08:05

用于更新所有账号的各种统计信息,由于数据量过大,一次更新全部账号对服务器的压力过大,容易执行超时,甚至造成阻塞。

所以采取按照用户ID分批次更新的方法,一次更新100个用户,不仅减轻了服务器的压力,总的执行时间反而比一次性全部更新要快。

#!/usr/bin/env bash

logPwd='/home/wangsai/log/update_stat_count.log'

# 获取起始Id和结束Id,返回的是字符串, eg : `"23~2345"`(包含双引号)
res=`curl https://xxx.com/stat/api/get-user-ids`
echo $res >> $logPwd

# 获取字符串总长度
reslen=${#res}

# 获取分隔符位置,用于定位起始Id和结束Id
separateIndex=`expr index $res "~"`

# 最小ID的长度
minIdlen=`expr $separateIndex - 2`

# 最小ID
idMin=`expr substr $res 2 $minIdlen`
echo $idMin >> $logPwd

# 最大ID的长度
maxIdlen=`expr $reslen - $separateIndex - 1`

# 最大ID的起始位置
maxIdIndexBegin=`expr $separateIndex + 1`

# 最大ID
idMax=`expr substr $res $maxIdIndexBegin $maxIdlen`
echo $idMax >> $logPwd

# 循环,每次更新一百个用户数据

while (( $idMin<$idMax ))
do
    # 请求参数
    paramBeginId=$idMin
    paramEndId=`expr $idMin + 100`

    # 拼接Uri
    uri="https://xxx.com/stat/api/update-stat-count?begin_id=${paramBeginId}&end_id=${paramEndId}"
    echo $uri >> $logPwd

    # 发送请求更新数据
    curlRes=`curl $uri`
    echo $curlRes >> $logPwd

    $idMin=$paramEndId
done

# 添加时间,换行
echo -e >> $logPwd
date >> $logPwd
echo -e >> $logPwd

这是第一次写shell脚本,公司没有大神,完全靠自己看文档摸索,写的不好,欢迎大神批评指正。

版权声明:本文为博主原创文章,未经博主允许不得转载。

第一个Shell脚本

打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了。 输入一些代码: #!/...
  • jek123456
  • jek123456
  • 2016年09月20日 10:23
  • 273

Shell脚本中参数处理方法

在Shell脚本中处理命令行参数,可以使用getopts/getopt来进行——当然,手工解析也是可以的。 下面通过一个特定的情景来讲一下这三种参数处理方法。 这两天写了一个安全删除的脚本,原理就是将...
  • strivezxq
  • strivezxq
  • 2015年05月03日 10:49
  • 1632

shell脚本中执行命令的疑难浅析

shell脚本中执行命令的疑难浅析问题场景描述代码模式如下,目标是去除$all_xls_version_file中的在err_xls_list中出现的行。#--sed_test.sh-- #!/bin...
  • zimmermanlin
  • zimmermanlin
  • 2015年03月17日 14:26
  • 1320

Shell脚本学习笔记-变量使用及输入输出

1. 变量的定义 1.1 变量名可以由字母、数字、下划线组成,但数字不能作为变量名的第一个字符。 1.2 通过赋值符号“=”来定义变量的值,e.g: myname='test',  字符串类型,不解析...
  • swordgirl2011
  • swordgirl2011
  • 2016年04月17日 11:58
  • 998

shell脚本:位于第一行的#!

当shell执行一个程序时,会要求内核启动一个新的进程(process),以便在该进程里执行所指定的程序。内核知道如何为编译型程序做这件事。我们的nusers(使用者) shell脚本并非编译型程序;...
  • Arthur__yan
  • Arthur__yan
  • 2015年07月17日 23:30
  • 1221

找出字符串中第一个只出现过一次的字符和位置

题目:找出字符串中第一个只出现过一次的字符和位置 比如:abcebad 只出现过一次的第一个字符应该是c,第3个。 @左耳朵耗子 大哥说的算法如下:        int[] pos...
  • lazy_p
  • lazy_p
  • 2013年07月31日 20:22
  • 3698

【Shell脚本学习5】第一个Shell脚本

打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了。 输入一些代码: #!/...
  • dongdong230
  • dongdong230
  • 2016年01月03日 19:49
  • 134

第一个Shell脚本

打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了。 输入一些代码: #!/...
  • dongdong230
  • dongdong230
  • 2014年10月23日 13:21
  • 481

编写第一个 Shell 脚本

liunx 脚本文件
  • qq_25564281
  • qq_25564281
  • 2017年08月07日 19:30
  • 148

Shell 教程:第一个shell脚本

打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 test.sh,扩展名为 sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用 php 写 shell 脚...
  • lwgechen
  • lwgechen
  • 2017年07月09日 15:32
  • 116
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:我的第一个shell脚本
举报原因:
原因补充:

(最多只允许输入30个字)