欢迎光临
我们一直在努力

linux程式设计-11.shellscript(bash)–(6)流程控制case_shell教程

建站超值云服务器,限时71元/月

casewordin[pattern[|pattern]…)list;;]…esac
case/esac的标准用法大致如下:
case$argin
pattern|sample)#arginpatternorsample
;;
pattern1)#arginpattern1
;;
*)#default
;;
esac
arg是您所引入的参数,如果arg内容符合pattern项目的话,那麽便会执行pattern以下的程式码,而该段程式码则以两个分号”;;”做结尾。

可以注意到”case”及”esac”是对称的,如果记不起来的话,把”case”颠倒过来即可。

——————————————————————————–

例一:paranoia
#!/bin/sh
case$1in
start|begin)
echo”startsomething”
;;
stop|end)
echo”stopsomething”
;;
*)
echo”Ignorant”
;;
esac

执行
[foxman@foxmanbash]#chmod755paranoia
[foxman@foxmanbash]#./paranoia
Ignorant
[foxman@foxmanbash]#./paranoiastart
startsomething
[foxman@foxmanbash]#./paranoiabegin
startsomething
[foxman@foxmanbash]#./paranoiastop
stopsomething
[foxman@foxmanbash]#./paranoiaend
stopsomething

——————————————————————————–

例二:inetpanel
许多的daemon都会附上一个管理用的ShellScript,像BIND就附上ndc,Apache就附上apachectl。这些管理程式都是用shellscript来写的,以下示一个管理inetd的shellscript。
#!/bin/sh

case$1in
start|begin|commence)
/usr/sbin/inetd
;;
stop|end|destroy)
killallinetd
;;
restart|again)
killall-HUPinetd
;;
*)
echo”usage:inetpanel[start|begin|commence|stop|end|destory|restart|again]”
;;
esac

——————————————————————————–

例三:判断系统
有时候,您所写的Script可能会跨越好几种平台,如Linux、FreeBSD、Solaris等等,而各平台之间,多多少少都有不同之处,有时候需要判断目前正在那一种平台上执行。此时,我们可以利用uname来找出系统资讯。
#!/bin/sh

SYSTEM=`uname-s`

case$SYSTEMin
Linux)
echo”MysystemisLinux”
echo”DoLinuxstuffhere…”
;;
FreeBSD)
echo”MysystemisFreeBSD”
echo”DoFreeBSDstuffhere…”
;;
*)
echo”Unknownsystem:$SYSTEM”
echo”Idontwhattodo…”
;;
esac

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » linux程式设计-11.shellscript(bash)–(6)流程控制case_shell教程
分享到: 更多 (0)