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\tRemoving old publish output"
    pushd $(pwd)/$project
    rm -rf obj/Docker/publish
    echo -e "\e[33m\tRestoring project"
    dotnet restore
    echo -e "\e[33m\tBuilding 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\tRemoving old publish output"
done

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

时间: 2024-11-07 13:13:37

Linux~Sh脚本一点自己的总结的相关文章

linux sh脚本异常:/bin/sh^M:bad interpreter: No such file or directory

在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory.这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息. 如果我们的脚本是在windows环境下编写的,需要将编码转换称unix格式. 下面我们用Notepad++中Windows,Unix,Mac三种格式之间的转换. 1.我们先查看当前文件格式(换行符用的是什么字符),如图: 2.从

android init.rc 脚本与linux .sh脚本

安卓.sh和.rc脚本的区别: rc是android初始化的脚本,是用android init language编写,通过init程序来执行任务. sh是linux里面的shell脚本,可以在sh或者bash里面执行任务的.

Linux crontab的使用方式,sh脚本的编写,sh脚本自动启动tomcat服务器,sh监控系统运行情况

1.如果想使用Linux crontab(类似java quartz),需要先启动crontab.关于crontab的启动.关闭.重启.重新载入配置的方式如下: /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload //重新载入配置 2.crontab的命令介绍: A:添加crontab的命令是:c

linux第一个C语言和sh脚本

linux第一个C语言 $ gedit hello_world.c #include <stdio.h> int main(void) { printf("hello world!\n"); return 0; } 保存后使用 gcc 生成可执行文件: $ gcc -o hello_world hello_world.c gcc 生成二进制文件默认具有可执行权限,不需要修改 ,然后直接执行即可 linux 第一个sh脚本文件 先创建脚本文件:gedit hello_shel

Linux自动执行sh脚本

crontab Linux 用户时程表 crontab -l 查看时程表 crontab -e 编辑时程表 crontab -r 删除时程表 一般crontab 服务是自动启用的. service crond status 命令,查看crontab 是否启用 事例:在指定时间执行/opt/start.sh,在指定时间执行/opt/stop.sh crontab -e 进入vi编辑界面 */2 * * * * sh /opt/start.sh #每隔2分钟执行一次start.sh脚本 */4 *

自动化部署脚本--linux执行sh脚本

自动化部署脚本文件目录: 运行主程序:./install.sh #!/bin/bash SCRIPTPATH=$(cd "$(dirname "$0")"; pwd) Install_log=$SCRIPTPATH/install_log.txt echo "***start install***" > $Install_logecho " workspace is $SCRIPTPATH" | tee -a "

通过sed -i ,通过准备好的sh脚本,来设置linux iptable白名单

通过准备好的sh脚本,来设置linux iptable白名单 特定字符串的行前插入新行 sed -i '/特定字符串/i 新行字符串' file #!/bin/bash del_stdin_buf() { read -d '' -t 0.1 } echo "Setting https enabled for remote access...." https_port=`grep 'dport 443' /etc/sysconfig/iptables | wc -l` if [ $htt

linux下sh脚本定时删除文件

一.sh脚本如下: #!/bin/sh location="/home/sharedir/" find $location -mtime +30 -type f |xargs rm -f 保存命名为del.sh 另外两种查找相关文件的方法如下: 1)find  /home/sharedir/  -mtime +30 -type f -name *.gz 2)find  /home/sharedir/  -mtime +30 -type f |xargs 二.使用crontab -e 定

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执