shell脚本定期生成phpdoc

2 篇文章 0 订阅
2 篇文章 0 订阅

在linux中使用shell脚本定时操作,svn up源代码至最新,同时生成phpdoc文档,本例将完成一个实例:

1. 新建一个目录用来存放sh脚本文件(以及用到的log日志):/opt/ci123/www/html/shell/scm/bbs2014

其中的文件说明:

function.sh:包含脚本使用到的一些function;

config.sh:包含脚本中操作的一些环境配置,例如svn账号密码路径、phpdoc存放路径、源代码路径等等;

global.sh:包含对所有引用的包含;

svn.sh:主main执行脚本,包含操作流程;

svn.log:本例中对每次sh执行操作的log日志记录文件(可由sh脚本生成,名字可自定义);

svn_tmp.log:本例中存储最近一次的sh执行操作的log日记记录文件(可由sh脚本生成,名字可自定义);

2. sh脚本代码:

function.sh:

#!/bin/sh
addLog()
{
        # $1:内容
        # $2:日志路径
        echo -e $1 >> $2;
}
setLog()
{
        # $1:内容
        # $2:日志路径
        echo -e $1 > $2;
}
getSvnVersion()
{
        # $1:svn本地工作区
        # $2:svn用户名
        # $3:svn密码
        # grep查找过滤 | cut分割 以“:”取第二块 | tr去除 空格
        echo `svn info --username=$2 --password=$3 $1 | grep "Revision" | cut -d ":" -f 2 | tr -d " "`; #svn本次版本
}
updateSvn()
{
        # $1:svn本地工作区
        # $2:svn用户名
        # $3:svn密码
        echo `svn up --username=$2 --password=$3 $1 | grep "revision"`;
}
setPhpdoc()
{
        # $1:本地源代码路径
        # $2:phpdoc文档生成路径
        echo `phpdoc -d "$1" -t "$2" -ti "$1" -o "HTML:frames:default" | grep "Total Documentation Time"`;
}
getValByKey()
{
        # $1:文件路径
        # $2:要搜索的键值 key:val
        test -f "$1" && tmp=`cat $1 | grep "$2" | cut -d ":" -f 2 | tr -d ""` || tmp="";
        echo $tmp;
}
config.sh:

#!/bin/sh
# svn相关设置
g_svn_path="http://svnadmin.xxx";
g_svn_user="name";
g_svn_pwd="pwd";
# 工作目录
g_path="/opt/ci123/www/html/bbs2014";
g_path_work="$g_path/bbs2014"; #源代码根目录
g_path_phpdoc="/opt/ci123/www/html/phpdoc/bbs2014/"; #phpdoc生成文档存放目录
# 临时目录
g_log=`pwd`"/svn.log"; #运行日志
g_log_tmp=`pwd`"/svn_tmp.log";
global.sh:

#!/bin/sh
source config.sh
source function.sh
svn.sh:

source global.sh

now=`date '+%F %T'`;
log="log:$now""\n"; #记录下执行时间

`updateSvn $g_path_work $g_svn_user $g_svn_pwd`;
svn_version_now=`getSvnVersion $g_path_work $g_svn_user $g_svn_pwd`;
log="$log""svn:$svn_version_now""\n"; #记录下执行时的svn版本号

svn_version_tmp=`getValByKey "$g_log_tmp" "svn"`
if [ ! $svn_version_tmp ]; then
        svn_version_tmp=0;
fi

if [ "$svn_version_now" -gt "$svn_version_tmp" ]; then
        #需要更新phpdoc
        log="$log"`setPhpdoc $g_path_work $g_path_phpdoc`"\n";
fi

`setLog "$log" "$g_log_tmp"`;
`addLog "$log" "$g_log"`;

3. 添加crontab定时执行:

## @xwl 2014-07-21 /bbs2014/svn.sh
0 10 * * * (cd /opt/ci123/www/html/shell/scm/bbs2014 ; sh svn.sh)
4. sh执行记录:

执行过后,查看svn_tmp.log(最近一次日志记录):

log:2014-07-31 10:00:01
svn:1305
svn.log(包含所有日志记录):

log:2014-07-22 10:47:05
svn:1305
Total Documentation Time: 5 seconds

log:2014-07-22 10:47:25
svn:1305

....
其中包含的信息有:sh执行时间,执行时源代码svn版本号,phpdoc文档是否生成。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值