case流程控制語句在linux中有其獨到的一面,使得在程式設計過程中能夠在腳本編寫的過程中具備多個選項功能,使其功能多樣化,其具備簡單,快速的特點。
一、case流程語句結構圖
根據流程圖可以知道,在所給出的條件中,首先将“變量值”與模式1進行比較,若取值相同
則執行模式1後的指令序列,直到遇見雙分号“;;”後跳轉至esac,表示分支結束;若與模式1不相比對,則繼續與模式2 進行比較,若取值相同則執行模式2 後的指令序列,直到遇見雙分号“;;”後跳轉至esac,表示結束分支,……依次類推,若找不到任何比對的值,則執行預設模式“*)”後的指令序列,直到遇見esac後結束分支
二、case流程控制文法
case 變量值 in
模式1)
指令序列1
;;
模式2)
指令序列2
…………
*)
預設指令序列
esac
三、case語句執行個體
3.1
<code>!</code><code>/bin/bash</code>
<code>echo</code> <code>"*******************************"</code>
<code>echo</code> <code>" 1) Copy "</code>
<code>echo</code> <code>" 2) Delete "</code>
<code>echo</code> <code>" 3) Backup "</code>
<code>echo</code> <code>" 4) Quit "</code>
<code>read</code> <code>-p </code><code>"請輸入您的選擇:"</code> <code>sl</code>
<code>case</code> <code>$sl </code><code>in</code>
<code> </code><code>1)</code>
<code> </code><code>echo</code> <code>"您選擇的是拷貝"</code>
<code> </code><code>;;</code>
<code> </code><code>2)</code>
<code> </code><code>echo</code> <code>"您選擇的是删除"</code>
<code> </code><code>3)</code>
<code> </code><code>echo</code> <code>"您選擇的是備份"</code>
<code> </code><code>4)</code>
<code> </code><code>echo</code> <code>"退出"</code>
<code> </code><code>*)</code>
<code> </code><code>echo</code> <code>"請輸入有效選項"</code>
<code>esac</code>
3.2
<code>#!/bin/bash</code>
<code>read</code> <code>-p </code><code>"請輸入一個區号:"</code> <code>num</code>
<code>case</code> <code>$num </code><code>in</code>
<code> </code><code>*)</code><code>echo</code> <code>-n </code><code>"中國"</code><code>;;&</code>
<code> </code><code>03*)</code><code>echo</code> <code>-n </code><code>"河南省"</code><code>;;&</code>
<code> </code><code>??71)</code><code>echo</code> <code>"鄭州市"</code><code>;;</code>
<code> </code><code>??94)</code><code>echo</code> <code>"周口市"</code><code>;;</code>
<code> </code><code>??18)</code><code>echo</code> <code>"許昌市"</code><code>;;</code>
<code> </code><code>01*)</code><code>echo</code> <code>-n </code><code>"北京市"</code><code>;;&</code>
<code> </code><code>??91)</code><code>echo</code> <code>"昌平區"</code><code>;;</code>
<code> </code><code>??92)</code><code>echo</code> <code>"順義區"</code><code>;;</code>
<code> </code><code>??97)</code><code>echo</code> <code>"東風區"</code><code>;;</code>
注:使用的“;&”表示語句經過該條件之後不結束而是緊跟着下個條件繼續執行,直至碰到;;或esac等。而使用“;;&”結尾表示在使用case中能夠使用“*”和"?",其分别表示任意多個任意字元和一個任意字元,語句不會停止在“;;&”此結尾處,而會依舊向下查詢如果條件滿足則繼續輸出,直至碰倒";;"或esac結尾才能結束。
本文轉自 CARYFLASH 51CTO部落格,原文連結:http://blog.51cto.com/maoxiaoxiong/1840658