内嵌tomcat部署java 脚本_shell基本语法及tomcat自动部署脚本

1. 基本语法

#!/bin/sh

#上面写法是一个约定,告诉linux系统使用哪个解释器

#变量的声明及赋值,下面的赋值形式都可以

#变量名只允许字母数字和下划线,不允许数字开头及空格

#注意=号两面不允许有空格

#注意shell的变量只有字符串类型

your_name="yournamestr"

#符号转义\,

echo "this is defined by \"\" ${your_name}"

your_name='yournamestr'

#注意:""里面的$符号会被解析,''里面的$不会被解析

echo "this is defined by '' ${your_name}"

echo 'this is defined by ''${your_name}'

#下面这中形式赋值要求值不能包含任何空格

your_name=yournamestr

echo "this is defined by nothing ${your_name}"

#变量取值,以下两种形式均可以,但是默认加{}会有助于解释器确定变量名的符号边界 下面第一行会正常输出 第二行会取your_nametest变量的值,因为没有定义所以无输出 第三行中间加了一个空格并不是想要结果

echo '${your_name}='${your_name}test

echo '$your_nametest='$your_nametest

echo '$your_name test='$your_name test

#下面是字符串拼接

echo "this is ${your_name}"

echo this is ${your_name}

# 将变量设为只读模式,也就是java中final,下面就不能再被修改

readonly your_name

#变量删除

unset_test="unset_test"

unset unset_test

#表达式赋值,以下两种都可以,但是推荐下面第一行的写法,第二行的`` 和''太相似容易迷惑

files=$(ls /)

echo files

for fileName in files;do

echo ${fileName}

done

echo '===================================='

files=`ls /`

echo files

for fileName in files;do

echo ${fileName}

done

#变量分为局部变量和环境变量和shell变量

#局部变量是指在脚本中定义的仅在当前脚本有效的变量值

#如上面的your_name 等等

#下面的尽管没有在当前脚本没有定义,依然有输出,这些比如PATH就是环境变量

echo 'PAH='${PATH}

#还有一些是shell解释器内置的变量

#------------------------------------------------------------------

# 特殊含义的变量:包括$表示当前shell进程Id

# $表示当前shell进程Id

# $0 表示当前脚本文件名

# $n 表示传给当前脚本或者函数的第N个参数

# $# 表示传给脚本的或者函数的参数的个数

# $* 传递给脚本或函数的所有参数

# $@ 传递给脚本或函数的所有参数,与上面略有不同:当不被""包含时间$*和$@都是返回一个数组;被""包含时$* 返回的是一个字符串$@还是一个数组

# $? 上个命令的退出状态或者返回值

echo "pid=$$"

echo "script fileName=$(pwd)/$0"

echo "param size=$#"

for param in "$*";do

echo ${param}

done

for param in "$@";do

echo ${param}

done

DATE=`date`

echo "${DATE}"

DATE=$(date)

echo "${DATE}"

#-----------------------------------------------------------------

# 运算符两侧需要空格

#

val=`expr 1 + 1`

echo ${val}

a=10

b=10

#*号需要转义

echo `expr ${a} \* ${b}`

echo `expr ${a} == ${b}`

if [ $a == $b ]

then

echo "a==b is 1"

fi

#-----------------------------------------------------------------

# 关于字符串的相关操作

str="asdfg"

echo "长度是"${#str}

#1为index 2为长度

echo "字符串截取"${str:1:2}

# 这个有问题... 不太对

echo "字符串是否包含子串"`expr index ${str} a`

echo ${#str[@]}

#-----------------------------------------------------------------

# 数组 元素之间需要用空格隔开

arrayexample=("11" "12" "13" "14")

arrayexample[4]="5"

for value in ${arrayexample[*]} ;do

echo $value

done

for((index=0;index

echo ${arrayexample[index]}"<>"${#arrayexample[index]}

done

#-----------------------------------------------------------------

# 判断语法

function testIf(){

# if fi判断,注意 if后面有一个空格且判断语句前后与[]都要有一个空格,比如:if [ a==b ] 或者if [ a == b ]

if [ 1 == 1 ]

then

echo '1==1'

fi

# if else

if [ 1 == 2 ]

then

echo '1==2'

else

echo '1!=2'

fi

# if... elif...fi

if [ 1==2 ]

then

echo '1==2'

elif [ 1==3 ]

then

echo '1==2'

else

echo 'end if'

fi

}

testIf

#-----------------------------------------------------------------

# 循环语法

function testLoop(){

echo "for index loop"

for((a=1;a<=4;a++));do

echo $a

done

echo "for each loop"

for fd in $(ls ./) ;do

echo $fd

done

echo "while loop"

b=0

while((b<10))

do

echo $b

let b++

done

echo "until loop"

a=0

until [ ! $a -lt 10 ]

do

echo $a

a=`expr $a + 1`

done

}

testLoop

#-----------------------------------------------------------------

# 定义函数 及返回值及 函数调用 及echo 和return

function checkPathExist(){

if [ -e $1 ]

then

echo 0;

else

echo 1;

fi

return 127;

}

#checkPathExist $1

value=$(checkPathExist $0)

value2=$?

value3=`echo "12344"`

echo "value=${value},line14意思是从输出缓存行获取第一行的值"

echo "value2=${value2},line15意思是获取line14的返给bashshell的statusCode"

echo "value3=${value3},line16的意思是获取echo函数的返回给bash解释器的statusCode"

2.一个tomCat部署小脚本

#!/bin/sh

#项目的版本

project_name="test"

project_version="1.0-RELEASE"

shutDownPort="8090"

httpPort="9090"

originwarPath="/opt/wars/${project_name}/${project_name}-${project_version}.war"

tomcatPath="/opt/apache-tomcat-7.0.94-deploy.tar.gz"

deployPath="/opt/deploy/${project_name}/"

#检测目录是否存在

function checkPathExist(){

if [ -e $1 ]

then

echo 0;

else

echo 1;

fi

}

# 停止当前应用TOMCAT

function stopCurentAppTomcat(){

pid=`ps -ef|grep ${deployPath} | grep -v grep |cut -c 10-15`

if [ ${#pid[*]} -gt 0 ]

then

echo "${project_name} is running with pid ${pid},now top it"

sh ${deployPath}bin/shutDown.sh

echo 0

else

echo "${project_name} is not running,just return"

echo 1;

fi

}

# 初始化部署目录

function initTomcat(){

if [ -e ${deployPath} ]

then

#clear Current work path

echo "tomcat inited,now clearn webapps dir"

cd ${deployPath}webapps/

rm -rf ./*

echo "now copy war packs to ${deployPath}"

cp $originwarPath $deployPath/webapps/ROOT.war

else

echo "now copy tomcat to ${deployPath}"

tar -xvf ${tomcatPath} -C ${deployPath}

sed -i 's%{shutdownPort}%${shutDownPort}%g' ${deployPath}conf/server.xml

sed -i 's%{httpPort}%${httpPort}%g' ${deployPath}conf/server.xml

echo "now copy war packs to ${deployPath}"

cp $originwarPath $deployPath/webapps/ROOT.war

fi

}

# 启动tomcat

function startTomcat(){

sh ${deployPath}bin/startup.sh

}

#开始启动部署逻辑

echo "begin deploy ${project_name}-${project_version}"

exists=$(checkPathExist ${deployPath});

if [ ${exists} -gt 0 ]

then

echo "tomcat in ${deployPath} not exist,begin initTomcat"

else

echo "${deployPath} exists,now stop currentTomcat"

stopCurrentAppTomcat

echo "ensure tomcat stopped finished"

fi

echo "begin initTomcat and prepare war packs"

initTomcat;

echo "tomcat and webapp is deployed to ${deployPath},now start tomtcat"

startTomcat;

echo "deploy completed"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值