casewordin[pattern[|pattern]...)list;;]...esaccase/esac的标准用法大致如下:case$arginpattern|sample)#arginpatternorsample;;pattern1)#arginpattern1;;*)#default;;esacarg是您所引入的参数,如果arg内容符合pattern项目的话,那麽便会执行pattern以下的程式码,而该段程式码则以两个分号";;"做结尾。可以注意到"case"及"esac"是对称的,如果记不起来的话,把"case"颠倒过来即可。--------------------------------------------------------------------------------例一:paranoia#!/bin/shcase$1instart|begin)echo"startsomething";;stop|end)echo"stopsomething";;*)echo"Ignorant";;esac执行[foxman@foxmanbash]#chmod755paranoia[foxman@foxmanbash]#./paranoiaIgnorant[foxman@foxmanbash]#./paranoiastartstartsomething[foxman@foxmanbash]#./paranoiabeginstartsomething[foxman@foxmanbash]#./paranoiastopstopsomething[foxman@foxmanbash]#./paranoiaendstopsomething--------------------------------------------------------------------------------例二:inetpanel许多的daemon都会附上一个管理用的ShellScript,像BIND就附上ndc,Apache就附上apachectl。这些管理程式都是用shellscript来写的,以下示一个管理inetd的shellscript。#!/bin/shcase$1instart|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/shSYSTEM=`uname-s`case$SYSTEMinLinux)echo"MysystemisLinux"echo"DoLinuxstuffhere...";;FreeBSD)echo"MysystemisFreeBSD"echo"DoFreeBSDstuffhere...";;*)echo"Unknownsystem:$SYSTEM"echo"Idon'twhattodo...";;esac