背景
由于在工作中需要一次性关闭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个字符
分享到:
相关推荐
本资源"高级Shell脚本编程.zip"包含了一个CHM(Compiled Help Manual)格式的中文文档,这对于运维人员和对Shell脚本感兴趣的人员来说,是一个非常有价值的参考资料。CHM文件是微软开发的一种帮助文档格式,它将多个...
例如,一个名为mkf的Shell脚本,其功能是显示root目录下的文件详细信息,然后创建一个名为kk的目录,并在该目录下创建一个名为aa的文件,并将其权限修改为可执行。这一系列动作通过在脚本中编写相应的Linux命令实现...
一个简单的Shell脚本例子如下: ```bash #!/bin/bash echo "Mr.$USER, Today is:" echo "$(date '+%B%d%A')" echo "Wish you a lucky day!" ``` 这里,`#!/bin/bash`是Shebang,告诉系统使用哪个Shell解释器来执行...
- 可以使用`source`或`.`命令来执行另一个Shell脚本,将其中的函数和变量引入到当前脚本环境中。 通过掌握这些基本概念和技巧,你可以编写出复杂的Shell脚本来自动化日常的系统管理任务,提高工作效率。无论是简单...
- **管道(pipe)**:使用`|`连接命令,将一个命令的输出作为另一个命令的输入。 6. **文件和目录操作** - **路径和通配符**:`.`代表当前目录,`..`代表上一级目录,`*`和`?`用于匹配文件名。 - **命令**:`cd`...
在本资料包“Shell脚本资料汇总.zip”中,我们可以深入学习和掌握Shell脚本的相关知识,包括基础语法、控制结构、函数使用、变量与环境、文件处理以及一些高级技巧。 1. **基础语法**: - Shell脚本的开头通常会...
SHELL脚本的使用极大地提高了工作效率,特别是对于自动化任务和批量处理。以下是一些关于SHELL脚本的基本常识: 1. **基础语法** - 脚本的开头通常会指定SHELL类型,如`#!/bin/bash`,这告诉系统使用哪个SHELL来...
在这个结构中,`$variable`是要匹配的变量或表达式,`pattern1`、`pattern2`等是匹配模式,每个模式后面跟着一个分号和两个星号(;;)表示结束该模式的处理。`*`是默认模式,当没有前面的模式匹配时执行。 下面是一...
Shell脚本编程是一种在Linux和类Unix操作系统中广泛使用的自动化工具,它允许用户通过命令行接口执行一系列操作,实现批处理、系统管理任务或者复杂的任务自动化。本书《Shell脚本编程诀窍——适用于Linux、Bash等》...
7. **管道**:使用`|`符号将一个命令的输出作为另一个命令的输入,例如`ip addr | grep 'inet' | grep eth0`用来筛选特定的网络接口信息。 8. **命令排序**:使用分号`;`顺序执行多个命令,使用`&&`或`||`进行条件...
二是编写一个shell脚本(如`script.sh`)并将其推送到设备上,然后通过`adb shell sh script.sh`执行。如果在`bat`脚本中遇到进入`shell`后无法执行后续命令的问题,可能是因为没有正确处理命令的执行顺序或权限。...
总结一下,理解并熟练运用这些命令连接符对于编写高效、健壮的Shell脚本至关重要。通过它们,你可以控制命令的执行顺序、条件分支以及错误处理,从而更好地实现自动化任务和系统管理。在编写脚本时,应根据具体需求...
Shell脚本就是一系列命令的集合,这些命令可以被保存在一个文本文件中,然后通过执行这个文件来一次性运行所有的命令。在"Linux_test_shell.zip"中,我们可以期待找到这样的一个或多个脚本文件,它们包含了各种Linux...
在Shell脚本中,命令和参数之间通常由空格分隔,可以使用分号或&符号来执行多条命令。变量是Shell脚本的核心元素,定义时无需类型声明,如`first="hello"`。引用变量时需在其前加上$,如`echo $first`。如果值中包含...
《Linux 系统命令及 Shell 脚本实践指南》是一本全面介绍 Linux 操作系统中常用命令和 Shell 脚本编程的书籍。对于任何想要深入理解和掌握 Linux 系统管理的用户来说,这本书都是不可或缺的资源。下面将详细阐述书中...
- 一个Shell脚本可以调用另一个Shell脚本。通常使用`source`命令来包含另一个脚本文件。例如: ```bash source other_script.sh ``` 通过上述介绍,我们可以看到Shell脚本的基础知识和实践技巧是非常丰富的。...