||
case “$1” in
start)
echo –n “Starting SSHdaemon”
## Start daemon withstartprog(8). If this fails
## the echo returnvalue is set appropriate.
Startproc –f –p$SSHD_PIDFILE $SSHD_BIN $SSHD_OPTS –o “PidFile=$SSHD_PIDFILE”
#Remember status and beverbose
rc_status -v
;;
stop)
echo –n “Shutting downSSH daemon”
## Stop daemon withkillproc(8) and if this fails
## set echo the echoreturn value
killproc –p$SSHD_PIDFILE –TERM $SSHD_BIN
#Remember status and beverbose
rc_status -v
;;
restart)
## Stop the serviceand regardless of whether it was
## running or not,start it again.
$0 stop
$0 start
#Remember status and beverbose
rc_status -v
;;
*)
echo “Usage: $0{start|stop|restart|}”
exit 1
;;
esac
值得注意的是最后使用的“*)”,星号(*)用于匹配所有的字符串。在上面的例子中,如果用户输入的参数不是start、stop、或是restart中的任何一个,那么这个参数将匹配“*)”, 脚本执行下面这条命令,提示用户正确的使用方法。
echo “Usage: $0{start|stop|restart|}”
由于case语句是逐条检索匹配模式,因此“*)”所在的位置很重要。如果上面这条脚本将“*)”放在case结构的开头,那么无论输入什么,脚本只会所“Usage:$0 {start|stop|restart|}”这句话。
命令“;;”只在case结构中出现,Shell一旦遇到这条命令就跳转到case结构的最后。与此类似的是,C语言提供了break语句在switch结构中实现相同的功能,Shell只是继承了这种书写习惯。区别在于,程序员可以在C程序的switch结构中省略break语句(用于实现一种几乎不被使用的流程结构),而在shell的case结构中省略“;;”,则是不允许的。
Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )
GMT+8, 2024-11-24 12:01 , Processed in 0.032860 second(s), 18 queries , Gzip On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.