Linux Shell--判断文件夹是否存在

背景

最近在优化持续集成平台,原来耗时1个半小时,现在优化到只需要15分钟即可。而从git上拉取代码的时间从15分钟降低到了12秒。

原来的方式

原来的打包,为了避免Gradle在Build过程中的缓存影响打包

  1. 清除掉所有的代码以及缓存
  2. 重新git clone所有仓库
  3. 将部分子模块重新mv到对应的目录下
  4. 开始Gradle打包

现在的方式

提供了Git仓库的缓存,只有第一次更新,后续增量更新代码,再cp到构建目录下进行打包

  1. Workspace中专为仓库建立了目录
  2. 第一次git clone代码,后续都会进行git pull增量更新代码
  3. 在打包的过程中会将仓库中的代码cp 到构建的目录下
  4. 将部分子模块重新mv到对应的目录下
  5. 开始Gradle打包

在Shell中定义函数

在Shell中定义函数,与其他语言差不多,只是参数不用指定,使用$1则代表获取第一个参数,同理$2$3...则代表对应的参数,而在调用时,使用空格即可传递参数。

cloneOrUpdateRespority(){
    # 定义第一个参数为仓库名
    respority=$1
    echo $respority 
}
##调用函数
cloneOrUpdateRespority test

判断文件夹是否存在

通过-d "test"来判断文件夹是否存在

if [ -d 'test' ] && [ -d "${test}/.git" ];then
      echo "Git仓库存在"
else 
      echo "Git仓库不存在"
fi

if-else的使用

通过使用if-then-elseif-else-fi来完成if语句的判断

  1. if后的&&以及||的逻辑判断则需要使用多个[]来判断
  2. 需要注意的是,if后需要加个空格,所有的[]的前后都需要加空格来分割语句判断,否则会报警告line 9: [: missing "]"
  3. 在使用if-fi的时候,必须要配对,也就是5个if就需要有5个fi,否则就会报[Syntax Error: Unexpected End of File]
if [ -d 'test' ] && [ -d "${test}/.git" ];then
     # 存在test以及test中的.git,则认为test库曾经被拉到本地
     cd ${respority}
     git reset --hard HEAD
     git pull
     cd ..
else
      #如果不存在,则需要clone
      git clone -b ${Branch_Name} giturl/${respority} --depth 1
fi

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券