有时候,很久不接触的项目,突然要更新使用,而又懒的一个目录一个目录的去做更新处理,顾整理了一个shell脚本来做处理,同时也做为之前写的一篇文章的更新吧!链接 :http://genggeng.iteye.com/blog/1128679
代码如下:
#!/bin/bash -x PROJECTS_DIR=/home/gavingeng/projects/email function update_all() { for d in `ls` do # echo $d; cd $PROJECTS_DIR/$d echo "update project:current_dir: $PWD" `git pull` >>/home/gavingeng/tmp/test.log 2>&1 & sleep 5 echo "update success ^_^" done } function update() { echo "hello ,u can update" `git pull` >>/tmp/test.log 2>&1 & echo "update success ^_^" } cd $PROJECTS_DIR if [ -z "$1" ];then update_all elif [ -d "$PROJECTS_DIR/$1" ];then cd $PROJECTS_DIR/$1 echo $PWD update else echo "not exist \"$PROJECTS_DIR/$1\"" exit 0; fi
在做git更新时,若没有更新,就会出现"Already date to date",这里将它重定向到日志中做处理
今天又对脚本进行了更新、处理,如下:
#!/bin/bash -x PROJECTS_DIR=/home/gavingeng/projects/email ##排除以下情况: ##1.非目录 ##2.非git目录 function is_git_dir(){ param=`find $PWD -name ".git"` if [ -z "$param" ];then return 1 #1为假 else return 0 #0为真 fi } function update_all() { for d in `ls` do if [ -d "$PROJECTS_DIR/$d" ];then # echo $d; cd $PROJECTS_DIR/$d if is_git_dir $PWD;then echo "update project:current_dir: $PWD" `git pull` >>/home/gavingeng/tmp/test.log 2>&1 & sleep 5 echo "update success ^_^" else echo "$PWD is not a git dir!" fi else echo "$d is not a dirctory" fi done } function update() { echo "hello ,u can update" `git pull` >>/tmp/test.log 2>&1 & echo "update success ^_^" } cd $PROJECTS_DIR if [ -z "$1" ];then update_all elif [ -d "$PROJECTS_DIR/$1" ];then cd $PROJECTS_DIR/$1 echo $PWD if is_git_dir $PWD;then update else echo "$PWD is not a git dir!" fi else echo "not exist \"$PROJECTS_DIR/$1\"" exit 0; fi
改完后,发现if/else逻辑更多了,该想想如何去改了......