shell脚本 Bat批处理命令

左丘凡
2023-12-01

一。Shell脚本命令——linux .sh结尾

1.if语句
	if docker ps | grep ${container} ;then
   		 docker stop ${container}
	fi

	if docker ps -a | grep ${container};then
	    docker rm ${container}
	fi

2.美元符号$的使用
	使用Linux命令,用小括号     $(pwd)
	使用自定义的变量,用大括号   ${dir}

3.注释
	单行注释: #
	多行注释: :<<EOF … EOF 或者 :<<! … !           (:<< 标识多行注释开始,并指定一个标识符作为开始结束的标志)

4.语句截取
	real_dir="/home/jenkins/home/"${dir#'/var/jenkins_home/'    #返回的是 home/jenkins/home + dir去掉/var/jenkins_home

5.常量声明
	dir=$(pwd)
	real_dir="/home/jenkins/home/
dir=$(pwd)
echo "jenkins容器项目所在路径:"
echo $dir
echo "主机路径:"
real_dir="/home/jenkins/home/"${dir#'/var/jenkins_home/'}
echo $real_dir
#TAG = sh(returnStdout: true ,script: 'git tag --sort=taggerdate| tail -1').trim()
#echo TAG
echo "tag:" $tag
echo "Branch:" ${BRANCH_NAME}

echo "开始构建"

echo "创建前端代码打包脚本install.sh"
cat>web/install.sh<<EOF
sed -i "s@http://dl-cdn.alpinelinux.org/@https://repo.huaweicloud.com/@g" /etc/apk/repositories
apk update
apk add yarn
yarn config set registry https://registry.npm.taobao.org/
yarn && yarn build:dev
EOF

echo "打包前端代码生成dist目录"
docker run --rm --net=host -v ${real_dir}/web:/web -v /home/.cache/yarn/cmp:/usr/local/share/.cache/yarn -w /web node:10-alpine3.11 sh install.sh

echo "拷贝前端dist目录到后端项目的public目录,用于与后端公用端口,解决跨域问题"
mkdir -p ./src/main/resources/public
cp -r ./web/dist/ * ./src/main/resources/public

echo "后端构建"
mkdir -p /root/.m2


echo "后端mvn打包jar文件"
docker run --rm -v /root/.m2:/root/.m2 -v ${real_dir}:/cmp -w /cmp maven mvn clean install -DskipTests

echo "复制jar文件到指定docker目录"
mkdir -p docker && cp target/cmp-0.0.1-SNAPSHOT.jar ./docker && cp src/main/resources/font/msyh.ttc ./docker && cd docker 

echo "在指定docker目录创建Dockerfile文件用于生成docker容器"
cat>Dockerfile<<EOF
FROM openjdk:8u242-jdk
COPY cmp-0.0.1-SNAPSHOT.jar /
COPY msyh.ttc /usr/share/fonts/
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENTRYPOINT ["java", "-jar", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5008", "/cmp-0.0.1-SNAPSHOT.jar"]
EOF

echo "清理已有容器及镜像资源"
container="jenkins-cmp"
image=${container}

if docker ps | grep ${container} ;then
    docker stop ${container}
fi

if docker ps -a | grep ${container};then
    docker rm ${container}
fi

if docker images | grep ${image};then
    docker rmi ${image}
fi

echo "镜像制作"
docker build -t ${image} .
echo "容器运行"
docker run -d --restart=always --name ${container} -v /home/var/logs:/var/logs -p 8888:8888 -p 8889:8889 ${image} --spring.profiles.active=dev -Duser.timezone=GMT+8
#echo "拷贝字体"
#docker cp /usr/share/fonts/msyh.ttc ${image}:/usr/share/fonts

二。Bat 批处理命令——windows .bat结尾

案例tomcat软件bin文件夹下

1.双击运行乱码

打开另存为 ANSI 格式

2.语法总结

@echo off执行以后,后面所有的命令均不显示,包括本条命令。
echo off执行以后,后面所有的命令均不显示,但本条命令是显示的。

暂停,会出现 “请按任意键继续…”        pause
显示内容                           echo
注释                              : 
执行字符串指定的命令然后终止          /c
执行字符串指定的命令但保留            /k
开启窗口                          start cmd
设置临时环境变量                   setlocal
移除临时环境变量                   endlocal
查看系统环境变量                   set path

3.案例

//1.tomcat
bin/startup.bat

//2.运行antDesign项目
start cmd /k "f: && cd F:\若依源码\showProject\gitClone\AntDesignPro && yarn run serve"

//3.不显示命令
@echo off
echo 这是测试内容的第1行
echo 这是测试内容的第2行
echo 这是测试内容的第3行
echo end
pause

//4.显示命令echo off
echo off
echo 这是测试内容的第1行
echo 这是测试内容的第2行
echo 这是测试内容的第3行
echo end
pause
 类似资料: