概述

本文从一段统计C/C++程序脚本入手,记录shell脚本常用和重要的知识点。

代码量统计程序

文件名称,count_code_line.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/bash

# 统计代码行数 去除空格和注释
# author: by wangxintang function count_dir()
{
total1=0
for input in $*
do
count=`find $input -name *.c -or -name *.cc -or -name *.cpp -or -name *.h -or -name *.hh -or -name *.sh -or -name Make* |
xargs cat | grep -v -e "^$" -e ^s*//.*$ | wc -l`
# if [[ $count == *[!0-9]* ]];then
# echo "not a number2"
# fi
#echo -e "$input: $count"
res=$[ total1 + count ]
total1=$res
done
#echo res: $res
echo $res
} if [ $# -eq 0 ];then
echo -e count directory: `pwd`
DIR=`pwd`
ret=`find $input -name *.c -or -name *.cc -or -name *.cpp -or -name *.h -or -name *.hh -or -name *.sh -or -name Make* |
xargs cat | grep -v -e "^$" -e ^s*//.*$ | wc -l`
echo "ret: " $ret
else
res=`count_dir $*`
echo "wangxintang"
echo $r 大专栏  “代码量统计脚本”es
#echo $res

代码解释

使用方式

两种使用方式。

方式一,在程序所在目录,执行

1
./count_code_line.sh

统计当前目录下代码量。

方式二,在程序所在目录,统计其他源代码目录下代码量,例如统计 /home/user/code/。操作方式如下

1
./count_code_line.sh /home/user/code/

逐行解释

  1. #!/bin/bash,在文件第一行,指明使用/bin/bash解释程序,其他行以#开头的语句,表示注释
  2. function count_dir(),定义一个名为count_dir的函数
  3. total1=0,定义变量total1并初始化为0
    4.
    1
    2
    3
    4
    for input in $*
    do
    .....
    done

for循环遍历$*内容,input指示$* 中每一个元素。
$*是一个特殊变量,传递给函数或者shell脚本参数列表。

  1. count=`**`,表示执行”****“中内容,并将返回值保存到count变量
  2. res=$[ total1 + count ] ,求算数和
  3. total1=$res 取res中的值,保存到total1
  4. echo $res 输出res中的值
  5. 1
    2
    3
    if [ $# -eq 0 ];then
    else
    fi

if else 语句

  1. [ $# -eq 0 ], 判断$# 是否为0

shell重要知识点

特殊变量

$0 当前脚本的文件名
$n 传递给脚本或函数的参数。是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$ 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。被双引号(“”)包含时,与 $
稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

“代码量统计脚本”的更多相关文章

  1. [statsvn]-svn代码量统计

    用statasvn进行代码量统计的时候,第一步需要获取到项目的日志,但是我本机的svn1.4没有安装命令行,重新运行1.4的安装包也没有命令行的选项... 那就升级到最新的svn1.8好了,下载最新的 ...

  2. IDEA 代码量统计(Statistic)

    IDEA 代码量统计(Statistic) 1.1 前言 项目到了一定阶段,都会想要看看项目的代码量情况,这里主要使用插件Statistic进行代码统计查看. 1.2 安装插件步骤 找到插件市场入口并 ...

  3. git 统计代码量 shell脚本

    #!/bin/bash # 统计代码量 # 使用方法: sh gitstat.sh "2017-11-01" "2017-11-30" "JamKon ...

  4. shell scripts 之 代码量统计

    代码统计1 文件only中的内容为多个文件的文件名,code如下: xargs说明:xargs 读入stdin的值, 并默认以空白或者回车作为分隔符,将分割的值作为参数传给后面紧接着的的命令行操作.- ...

  5. Mark一个代码量统计工具-Statistic

    安装方式 IDEA.Goland系列插件市场搜索Statistic 简单说明 统计纬度比较丰富 基本覆盖常见纬度,如代码行数,文件大小等,各指标取最大最小及平均值. 统计目录为当前项目目录 只有在当前 ...

  6. 【IDEA插件】—— 代码量统计工具Statistic

    1.下载 1.打开idea设置界面,选择 plugins标签 2.搜索“Statistic”插件,点击 install 3.重启IDEA 2.使用 1.菜单栏中找到view 2.在下层目录中找到Sta ...

  7. git log 详解 以及代码量统计

    https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E6%9F%A5%E7%9C%8B%E6%8F%90%E4%BA%A4%E5%8E%86% ...

  8. Git 常用命令和统计代码量

    摘要 分享Git日常操作中常用的命令,分享如何统计在项目中贡献的代码量. 下面列出Git bash常用命令. 1. git clone **(项目地址) 克隆一个git项目到本地,将git项目拉取到本 ...

  9. Mysql分库分表导出导入和数据量统计测试

    需求:添加创建了分库分表后,业务可能将数据已经写入,但未来得及接入到otter汇总库.接入汇总库前需要初始化这部分数据. 1.导出 ip_port_list ) len=${#ip_port_list ...

随机推荐

  1. github新手使用教程

    1.首先打开https://github.com/官网 注册一个github账号 2.注册成功之后,登录账号,创建一个属于自己的库 3.创建完成之后,为了方便电脑上的代码上传到github 仓库上,要 ...

  2. socker通信-struct模块-粘包问题

    Socket概念 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对 ...

  3. ZJNU 1138 - 小兔的棋盘——中级

    二维图的动态规划因为不能穿越对角线,则选取对角线的一边dp即可选取对角线右下侧则x轴上每个点只能由其左侧的点走过去(只有1条)对角线上的点只能由对角线下方的点走过去其他点可以由左侧和下侧两种方式到达因 ...

  4. 菜鸟cmake使用

    cmake是用过把源码生成visual studio 工程的工具,也就是生成.sln文件.他会把相应的库依赖都自动添加上. cmake有个CMakeLists.txt (具体语法这里先不介绍) 我都是 ...

  5. 新年在家学java之基础篇--循环&数组

    因为“野味肺炎”的肆虐,过年被迫宅家只能吃了睡.睡了吃.这么下次只能长膘脑子空空,不如趁此机会重新学习java基础,为日后做铺垫~ 循环结构: 几种循环:for(::),while(){},do{}w ...

  6. 量化投资_轻松实现MATLAB蒙特卡洛方法建模

    1 目录 * MATLAB随机数的产生 - Uniform,Normal & Custom distributions * 蒙特卡洛仿真 * 产生股票价格路径 * 期权定价 - 经典公式 - ...

  7. redis day02

    Redis -带过期时间的key  如何删除掉的? 在redis内部有个  过期字典,所有带过期时间的都有过期字典 默认情况下 redis每秒会进行着10次过期字典的扫描,在每一次扫描过程里,执行如下 ...

  8. ZOJ-1610 Count the Colors(线段树染色,求染色段)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1610 https://vjudge.net/contest/318019# ...

  9. 创建可执行jar包

    1.编辑manifest.mf文件 Main-Class:空格 你的类名 回车 2.打包 jar cvfm 类名.jar manifest.mf 类名.class 3使用 java -jar 类名.j ...

  10. ubantu中的mysql命令

    查看mysql的安装目录:which mysql 进入mysql的运行状态:mysql -uroot -p 56..a_