美文网首页
Linux Shell--判断文件夹是否存在

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

作者: None_Ling | 来源:发表于2019-03-20 17:33 被阅读0次

    背景

    最近在优化持续集成平台,原来耗时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
    

    相关文章

      网友评论

          本文标题:Linux Shell--判断文件夹是否存在

          本文链接:https://www.haomeiwen.com/subject/ptdtvqtx.html