zoukankan      html  css  js  c++  java
  • Linux~Sh脚本一点自己的总结

    从.netCore开源项目来看,eShopOnContainers来说,它的部署是跨平台的,可以部署在linux,docker上,在linux上运行它也可以写一些集成的小脚本,这是微信工程师为我们提供一个部署发布方案的SH脚本

    #!/bin/bash
    declare -a projectList=(
        '../src/Services/Catalog/Catalog.API'
        '../src/Services/Basket/Basket.API'
        '../src/Services/Ordering/Ordering.API'
        '../src/Services/Identity/Identity.API'
        '../src/Web/WebMVC'
        '../src/Web/WebSPA'
        '../src/Web/WebStatus'
    )
    
    # Build SPA app
    # pushd $(pwd)../src/Web/WebSPA
    # npm run build:prod
    
    for project in "${projectList[@]}"
    do
        echo -e "e[33mWorking on $(pwd)/$project"
        echo -e "e[33m	Removing old publish output"
        pushd $(pwd)/$project
        rm -rf obj/Docker/publish
        echo -e "e[33m	Restoring project"
        dotnet restore
        echo -e "e[33m	Building and publishing projects"
        dotnet publish -o obj/Docker/publish
        popd
    done
    
    # remove old docker images:
    images=$(docker images --filter=reference="eshop/*" -q)
    if [ -n "$images" ]; then
        docker rm $(docker ps -a -q) -f
        echo "Deleting eShop images in local Docker repo"
        echo $images
        docker rmi $(docker images --filter=reference="eshop/*" -q) -f
    fi
    
    # No need to build the images, docker build or docker compose will
    # do that using the images and containers defined in the docker-compose.yml file.

    上面的解决主要体现了发布时用的一些命令,如数组,遍历,条件语句,删除文件,发布语句等,我自己写练了练手

    declare -a arr=(1
    2
    3
    4
    5
    )
    for i in "${arr[@]}"
    do 
    if [ $i == 2 ]
    then
       echo "a is equal to 2"
    else
       echo "a is not equal to 2"
    fi
    
    done
    
    
    declare -a projectList=(
        '../src/Services/Catalog/Catalog.API'
        '../src/Services/Basket/Basket.API'
        '../src/Services/Ordering/Ordering.API'
        '../src/Services/Identity/Identity.API'
        '../src/Web/WebMVC'
        '../src/Web/WebSPA'
        '../src/Web/WebStatus'
    )
    
    for project in "${projectList[@]}"
    do
        echo -e "e[33m工作在目录 $(pwd)/$project"
        echo -e "e[33m	Removing old publish output"
    done

    大家在写SH文件时要注意,linux与windows的回车符不一样,我们可以下载notepad++这个工具来进行转码。

  • 相关阅读:
    ubuntu正确输入用户名密码后重复登录界面
    Spring第一个程序
    winrar解压spring出现“路径和文件名总长度必须不能超过 260 个字符!”错误的解决方法
    Spring属性装配之属性类型是另外一个被装载的类
    classpath、path、JAVA_HOME的作用及JAVA环境变量配置
    ubuntu基本命令篇15系统管理time命令中Real,User,Sys概念
    基于linux使用mysql二进制包安装mysql5.5
    shell循环语法
    db笔记本
    shell function
  • 原文地址:https://www.cnblogs.com/lori/p/6923290.html
Copyright © 2011-2022 走看看