case语句说明
case语句为多选择语句(==其实就是类似if多分支结构==), 主要用于centos6的服务脚本里用于判断服务是start还是stop还是status等。
说明: python里没有case语句,python里用if多分支来实现. 但case语句也需要看懂结构, 不仅是shell里用,在数据库的SQL语句里也有case语句。
函数说明
通俗地说,将一组命令集合或语句形成一个整体, 给这段代码起个名字称为函数名。可以通过函数名来调用函数内的代码,达到代码重复利用的目的。
# case语句格式示例
$var=1
case $var in # 定义变量;var代表是变量名
pattern 1) # 模式1;用 | 分割多个模式,相当于or
command1 # 需要执行的语句
;; # 两个分号代表命令结束
pattern 2)
command2
;;
pattern 3)
command3
;;
*) # 不满足以上模式,默认执行*)下面的语句
command4 # 这里可以不加;;符号
esac # esac表示case语句结束
#函数的定义语法
funct1() { # 函数名加()来定义函数,小括号是固定写法,大括号里面为函数体
echo 1
echo 2
echo 3 # 大括号里的三条命令就是函数主体
}
funct1 # 直接使用函数名字调用函数,将会执行函数主体内的内容
#函数调用函数
funct1() {
echo 1
echo 2
echo 3
}
funct2() {
funct1 # funct2里调用funct1,相当于是把funct1函数主体内的内容放到这个位置
echo 4
echo 5
}
funct2 # 调用funct2
#实现案例,case语句结合函数,写一个linux的sshd服务启动脚本
#!/bin/bash
# chkconfig: 2345 64 36
start() { # start函数
/usr/sbin/sshd # 调用/usr/sbin/sshd命令启动sshd服务
}
stop () { # stop函数
kill -15 $(cat /var/run/sshd.pid) # 通过pid文件查找pid,然后kill -15停进程
}
reload() { # reload函数
kill -1 $(cat /var/run/sshd.pid) # 通过pid文件查找pid,然后kill -1刷新
}
restart() { # restart函数里面调用stop和start的函数(函数的嵌套)
stop
start
}
status() { # status函数
if [ -e /var/run/sshd.pid ];then # 通过判断pid文件是否存在,从而得知服务是否启动
echo "sshd正在运行"
else
echo "sshd是停止状态"
fi
}
case "$1" in # $1变量回顾(shell第1天有讲),指执行脚本接的第一个参数
start ) # 如果$1的值为start,则调用start函数主体内的代码
start
;;
stop )
stop
;;
restart ) # 如果$1的值为restart
restart
;;
reload )
reload
;;
status )
status
;;
* ) # 如果$1的值不为start,stop,restart,reload,status其中之一,则执行下面的echo语句
echo "只支持(start|stop|restart|reload|status)"
esac