<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BIND &#8211; bhzhuOS爱好者(原StartOS爱好者)</title>
	<atom:link href="https://www.bhzhu203.com/tag/bind/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bhzhu203.com</link>
	<description>QQ群号125732839</description>
	<lastBuildDate>Thu, 28 Apr 2016 06:13:16 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.7</generator>
	<item>
		<title>Linux Shell编程case语句</title>
		<link>https://www.bhzhu203.com/2016/04/28/linux-shell%e7%bc%96%e7%a8%8bcase%e8%af%ad%e5%8f%a5/</link>
		
		<dc:creator><![CDATA[bhzhu203]]></dc:creator>
		<pubDate>Thu, 28 Apr 2016 06:13:16 +0000</pubDate>
				<category><![CDATA[linux知识]]></category>
		<category><![CDATA[BIND]]></category>
		<category><![CDATA[KEY]]></category>
		<category><![CDATA[SYSTEM]]></category>
		<guid isPermaLink="false">http://www.bhzhu203.com/?p=102</guid>

					<description><![CDATA[case语句适用于需要进行多重分支的应用情况。         case分支语句 [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class="panel-body content">
<p align="left">case语句适用于需要进行多重分支的应用情况。</p>
<p>        case分支语句的格式如下：</p>
<p><strong>case</strong> $变量名 <strong>in</strong></p>
<p>模式1<strong>）</strong></p>
<p>命令序列1</p>
<p><strong>;;</strong></p>
<p>模式2<strong>）</strong></p>
<p>命令序列2</p>
<p><strong>       ;;</strong></p>
<p><strong>*）</strong></p>
<p>默认执行的命令序列  <strong>   ;;</strong></p>
<p><strong>esac</strong></p>
<p>case语句结构特点如下：</p>
<p>case行尾必须为单词“in”，每一个模式必须以右括号“）”结束。</p>
<p>双分号“<strong>;;</strong>”表示命令序列结束。</p>
<p>匹配模式中可是使用方括号表示一个连续的范围，如[0-9]；使用竖杠符号“|”表示或。</p>
<p>最后的“*）”表示默认模式，当使用前面的各种模式均无法匹配该变量时，将执行“*）”后</p>
<p>的命令序列。</p>
<p>case语句实例：由用户从键盘输入一个字符，并判断该字符是否为字母、数字或者其他字符，</p>
<p>并输出相应的提示信息。</p>
<p>#!/bin/bash<br />
read -p &#8220;press some key then press return :&#8221; KEY<br />
case $KEY in<br />
[a-z]|[A-Z])<br />
echo &#8220;It&#8217;s a letter.&#8221;<br />
;;<br />
[0-9])<br />
echo &#8220;It&#8217;s a digit.&#8221;<br />
;;<br />
*)<br />
echo &#8220;It&#8217;s function keys、Spacebar or other ksys.&#8221;<br />
esac</p>
<p>######################################################</p>
<p>case word in [ pattern [ | pattern ] &#8230; ) list ;; ] &#8230; esac<br />
case/esac的标准用法大致如下:<br />
case $arg in<br />
pattern | sample) # arg in pattern or sample<br />
;;<br />
pattern1) # arg in pattern1<br />
;;<br />
*) #default<br />
;;<br />
esac<br />
arg是您所引入的参数，如果arg内容符合pattern项目的话，那麽便会执行pattern以下的程式码，而该段程式码则以两个分号&#8221;;;&#8221;做结尾。</p>
<p>可以注意到&#8221;case&#8221;及&#8221;esac&#8221;是对称的，如果记不起来的话，把&#8221;case&#8221;颠倒过来即可。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>例一 : paranoia<br />
#!/bin/sh<br />
case $1 in<br />
start | begin)<br />
echo &#8220;start something&#8221;<br />
;;<br />
stop | end)<br />
echo &#8220;stop something&#8221;<br />
;;<br />
*)<br />
echo &#8220;Ignorant&#8221;<br />
;;<br />
esac</p>
<p>执行<br />
[foxman@foxman bash]# chmod 755 paranoia<br />
[foxman@foxman bash]# ./paranoia<br />
Ignorant<br />
[foxman@foxman bash]# ./paranoia start<br />
start something<br />
[foxman@foxman bash]# ./paranoia begin<br />
start something<br />
[foxman@foxman bash]# ./paranoia stop<br />
stop something<br />
[foxman@foxman bash]# ./paranoia end<br />
stop something</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>例二 : inetpanel<br />
许多的daemon都会附上一个管理用的Shell script，像BIND就附上ndc，Apache就附上apachectl。这些管理程式都是用shell script来写的，以下示一个管理inetd的shell script。<br />
#!/bin/sh</p>
<p>case $1 in<br />
start | begin | commence)<br />
/usr/sbin/inetd<br />
;;<br />
stop | end | destroy)<br />
killall inetd<br />
;;<br />
restart | again)<br />
killall -HUP inetd<br />
;;<br />
*)<br />
echo &#8220;usage: inetpanel [start | begin | commence | stop | end | destory | restart | again]&#8221;<br />
;;<br />
esac</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>例三 : 判断系统<br />
有时候，您所写的script可能会跨越好几种平台，如Linux、FreeBSD、Solaris等等，而各平台之间，多多少少都有不同之处，有时候需要判断目前正在那一种平台上执行。此时，我们可以利用uname来找出系统资讯。<br />
#!/bin/sh</p>
<p>SYSTEM=`uname -s`</p>
<p>case $SYSTEM in<br />
Linux)<br />
echo &#8220;My system is Linux&#8221;<br />
echo &#8220;Do Linux stuff here&#8230;&#8221;<br />
;;<br />
FreeBSD)<br />
echo &#8220;My system is FreeBSD&#8221;<br />
echo &#8220;Do FreeBSD stuff here&#8230;&#8221;<br />
;;<br />
*)<br />
echo &#8220;Unknown system : $SYSTEM&#8221;<br />
echo &#8220;I don&#8217;t what to do&#8230;&#8221;<br />
;;<br />
esac</p></div>
<div class="panel-footer"></div>
<div class="panel-footer"></div>
<div class="panel-footer">转自 <a href="http://blog.csdn.net/dreamtdp/article/details/8048720" target="_blank">http://blog.csdn.net/dreamtdp/article/details/8048720</a></div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
