linux shell初始化项目脚本
新建test文件夹,在test文件夹下运行此脚本
#! /bin/bash
###
### 初始化所有的项目
###
### 字体颜色
#黑 1高亮度显示 0正常显示
black_color='\E[1;30m'
#红
red_color='\E[0;31m'
#绿
green_color='\E[0;32m'
#黄
yellow_color='\E[1;33m'
#蓝
bule_color='\E[0;34m'
#紫
purple_color='\E[1;35m'
#深绿
darkgreen_color='\E[1;36m'
#白
white_color='\E[1;37m'
reset='\E[0m'
function printProjectStaticsInfoAndRemoveFile(){
# 如果 filename为常规文件,则为真
if [[ -f $2 ]]
then
echo $1'的项目数为'`cat $2 | wc -l`'个,分别如下:'
cat '$2'
else
echo $1'的项目数为0个'
fi
rm -f $2
}
function checkToolExist(){
if which $1 > /dev/null
then
echo $1'安装成功!'
else
echo -e $red_color$1'没有安装,请安装!'$reset
exit
fi
}
function cloneProject(){
url=$1
projectItem=${url##*\/}
branch=$2
if [[ $projectItem == 'all' ]]
then
return
fi
# 如果 projectItem为目录,则为真
if [[ -d $projectItem ]]
then
echo -e $red_color'该项目'$projectItem'已存在,将跳过'$reset
echo $projectItem >> skipProjects
return
fi
tryTimes=3
sucCloneFlag=false
while [[ $tryTimes > 0 ]] && [[ ! $sucCloneFlg ]]
do
git clone $url'.git' -b $branch
if [[ $? -eq 0 ]]
then
echo $projectItem >> sucProjects;
sucCloneFlg=true
else
echo $projectItem >> failProjects;
sucCloneFlg=false
echo -e $red_color'克隆项目['$projectItem']失败,将重试,重试次数还有['$tryTimes']次'$reset
rm -rf $projectItem
fi
let tryTimes--
done
}
# 项目url
PROJECT_URL[0]='http://gitlab.test.net/test/test1'
PROJECT_URL[1]='http://gitlab.test.net/test/test2'
PROJECT_URL[2]='all'
tool_list=('git' 'mvn' 'java')
echo -e $green_color'检查工具是否安装:'$reset
for tool in ${tool_list[*]}
do
checkToolExist $tool
done
# 配置免密码登陆
git config --global credential.helper store
echo '将克隆以下项目:'
for index in ${!PROJECT_URL[*]}
do
url=${PROJECT_URL[$index]}
# ${url##*\/}:删掉最后一个 / 及其左边的字符串
project=${url##*\/}
echo $index'.'${project}
done
read -p '请选择需要克隆项目的编号' number
while [[ $number -lt 0 ]] || [[ $number -ge ${#PROJECT_URL[*]} ]]
do
echo '选择项目编号有误,请重新选择'
read number
done
read -p '请输入需要克隆项目的分支名[如果不填,默认为master]' branch
# 如果 branch长度为零,则为真
if [[ -z $branch ]]
then
branch='master'
fi
url=${PROJECT_URL[$number]}
project=${url##*\/}
current_path=$PWD
# =~ 表示匹配 $匹配结束符
if [[ $current_path =~ test$ ]]
then
cd ..
fi
# 克隆项目
echo '开始在['$PWD']目录下克隆git项目['${project}']'
if [[ $project == 'all' ]]
then
for url in ${PROJECT_URL[*]}
do
{
cloneProject $url $branch
} &
done
else
cloneProject $url $branch
fi
wait
printProjectStaticsInfoAndRemoveFile '克隆成功' 'sucProjects'
printProjectStaticsInfoAndRemoveFile '克隆失败' 'failProjects'
printProjectStaticsInfoAndRemoveFile '克隆跳过' 'skipProjects'
echo '配置maven私库'
curl http://test.aliyuncs.com/maven/settings.xml -o ~/.m2/settings.xml
# $? 最后运行的命令的结束代码(返回值)
if [[ $? -ne 0 ]]
then
echo '配置maven私库失败,请查明原因重试!';
exit
fi
echo '开始编译项目'
if [[ $project == 'all' ]]
then
cd test
else
cd $project;
fi
mvn clean install
if [[ $? -ne 0 ]]
then
echo '编译项目失败,请查明原因重试!';
exit
else
echo '编译项目成功,请导入到开发工具中'
fi