• 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++这个工具来进行转码。

  • 相关阅读:
    Pyramid of Glasses(递推)
    Vasya and String(尺取法)
    10317 Fans of Footbal Teams(并查集)
    8633 回文划分(dp)
    bzoj1036
    POJ 3071 Football(概率DP)
    POJ A Plug for UNIX (最大流 建图)
    hdu 3060 Area2 (计算几何模板)
    POJ 1273 Drainage Ditches (网络流Dinic模板)
    POJ 2443 Set Operation (按位压缩)
  • 原文地址:https://www.cnblogs.com/lori/p/6923290.html
Copyright © 2020-2023  润新知