shell以分号结尾_一个shell脚本引发的对于分号的使用说明

本文通过一个用于批量管理/opt/tomcat下各Tomcat实例的shell脚本,讲解了shell脚本中分号作为命令分割符的重要性。文中提到了三种if语句的写法,强调了分号用于区分语法关键字和命令,避免调用脚本时出现错误。同时,还补充了shell脚本中的数组使用、变量赋值规则及位置参数的相关知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

由于在工作中需要一次性关闭linux的opt目录下安装的多个tomcat,因此有了写一个脚本统一关闭开启这个目录下所有tomcat的想法

前提

Tomcat安装目录结构:  /opt/tomcat/tomcat_8080;/opt/tomcat/tomcat_9080……

思路

循环调用tomcat自身bin目录下的startup.sh、shutdown.sh开启或是关闭tomcat服务

脚本 TomCtrol.sh

#! /bin/sh

#定义批量处理端口

p=(4080 7080)

#开启或关闭tomcat服务器

startOrCloseTomcat(){

if [ $1 = -s ] ;  then           #执行开启命令

foreachStartup

elif [ $1 = -c ]                   #执行关闭命令

then

foreachShutdown

else

echo "参数不正确!请重新输入!"

exit #退出该函数

fi

}

#循环开启tomcat

foreachStartup(){

for port in ${p[@]}

do

s_res=`/opt/tomcat/*tomcat*$port/bin/startup.sh`

echo "$port-tomcat已经开启!"

done

}

#循环关闭tomcat

foreachShutdown(){

for port in ${p[@]}

do

s_res=`/opt/tomcat/*tomcat*$port/bin/shutdown.sh`

echo "$port-tomcat已经关闭!"

done

}

if [ $# -eq 0 ]

then

echo "请输入执行参数"

echo " -s  启动所有/opt/tomcat/下的tomcat"

echo " -c  关闭所有/opt/tomcat/下的tomcat"

else

#echo "start repari .."

startOrCloseTomcat $1

fi

关于shell脚本中分号(;)——命令分割符 的使用说明

首先先看几种写法,这里用if语句作为例子。

第一种

test(){

if [ 1 -eq 1 ]; then

echo "1=1"

else

echo "1!=1"

fi

}

第二种

test1(){

if [ 1 -eq 1 ]

then  echo "1=1"

else  echo "1!=1"

fi

}

第三种

test2(){ if [ 1 -eq 1 ] ; then echo "1=1" ; else echo "1!=1" ; fi }

由此可见分号是用来隔断每个语法关键字或命令的 。对于字符的比较及其他shell语法关键字之间分号的使用方式相同。需要知道的是在不同的语法命令之间要用分号隔开或是换行方能执行,否则将会在调用脚本的时候报错。

补充

if语句后的表达式比较变量要与比较操作符用空格分开。if [ 1 -eq 1 ]不能写成if[ 1 -eq 1 ] 、if [1 -eq 1 ]、if [ 1 -eq 1]、if [ 1-eq1 ]

shell中用arrary=(arr1 arr2 arr3 ……) 的方式声明数组

访问数组时使用${arrary[@]}访问整个数组 ,使用${p[index]}访问数组中的某个特定的值

变量赋值时变量名跟等号之间不能有空格

$# ——传给shell程序的位置参数个数;$0 ——脚本名称;$? ——最后命令的完成码或在shell程序内所执行的shell程序;$n (n>0)——获取传递的第n个参数

cd /opt/tomcat/tomcat*0     * 号代表匹配0..n个字符;cd /opt/tomcat/to?cat   ? 号代表匹配1个字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值