一个shell脚本引发的对于分号的使用说明
2009-11-24 16:52
344 查看
背景
由于在工作中需要一次性关闭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个字符
由于在工作中需要一次性关闭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脚本引发的对于分号(;)和$#的使用说明(转载)
- 一个shell脚本引发的对于分号的使用说明
- Shell脚本中的分号使用
- 〖Android〗存在多个Android设备时,使用Shell脚本选择一个Android设备
- Hadoop系列-HDFS的Shell脚本命令使用说明(六)
- 使用Shell写一个脚本,CPU使用率超过80%或硬盘超过85%邮件报警
- shell 脚本编写一个用户名,密码,编号的test.txt文件供数据库测试使用
- 一个使用shell脚本实现的修改文件中的字符串
- Linux下使用Shell脚本向FTP服务器上传或下载一个文件
- 一个shell脚本引发的(tomcat)血案
- Linux下使用Shell脚本删除一个目录下的所有子目录和文件
- shell脚本中使用自定义命令之三---通过加载一个envsetup.sh实现
- 老男孩教育每日一题-2017-04-17:使用Shell或Python写一个脚本,CPU使用率超过80%或硬盘超过85%邮件报警
- 一个shell脚本给客户使用服务器生成一个序列号
- shell脚本使用两个数组,判断一个变量是否在数组里面的例子
- 执行一个shell脚本而导致虚拟机centos6崩溃,慎重使用root权限
- 使用for、if语句添加用户的一个shell脚本
- 分享一个监控网络,磁盘使用,平均负载和RAM使用的shell脚本
- 使用shell编写一个脚本,磁盘超过80%邮件报警
- 使用Shell写一个随机发牌的脚本