## case语句
如果有很多层if else,最好使用case来代替。
case语句的功能是:把保留字case右边的值和闭括号“)”左边的值比较,其语法规则如下:
~~~
case VariableName in
value1)
Instruction
;;
value2 )
Instruction
;;
esac
~~~
从上面可以看出,case语句以保留字case开头,以esac结尾。它首先检查变量VariableName 的值,如果它与value1相等则执行第一组指令集,如果它与value2 相等则执行第二组指令集,以此类推。同时,在每组指令集的最后用两个分号(;;)。
在下面的例子中,将用case语句取代本章开头的if语句,请看:
~~~
case $region in
1)
echo "Hello,Gob. "
;;
2)
echo "Hello,Mary."
;;
3)
echo "Hello,Joan."
;;
4)
echo "Hello,Mike."
;;
5)
echo "Hello,Tom."
;;
esac
~~~
## case语句中的默认情况
在case语句中,如果用户没有给程序提供所需要的匹配值,那么程序就找不到它所要匹配的对象。如果是由程序设计者本人提供程序所必需的匹配值,这种情况有时就不会发生。
我们完全可以用保留字符(*)来为此留一条后路,即提供一种默认情况,让程序在此情况下执行一些必要的操作。请看下面示例:
~~~
case $region in
1)
echo "Hello,Gob. "
;;
2)
echo "Hello,Mary."
;;
3)
echo "Hello,Joan."
;;
4)
echo "Hello,Mike."
;;
5)
echo "Hello,Tom."
;;
*)
echo "Sorry,your region is not on my list."
esac
~~~
## case语句在用户界面中的应用
case语句最常和程序的用户界面一起使用。在一个程序显示菜单后,程序必须等待用户从键盘上输人一个字符。这通常由用户做出选择,输人选项,程序就用case语句把该选项与某些特定的值做比较。
假设读者想建立一个电子电话号码簿。为简单起见,在这里仅要求其具有两项功能:一是显示电话号码;二是可以添加电话号码。
首先,程序以菜单选项的形式将这两项功能显示在屏幕上。然后,由用户从键盘上输入相应的选项。
为实现这个目标,可以用case语句把用户输入的选项与已知的菜单项对比。
在下面的例子中,程序仅显示用户欲做何种选择的信息(当然,如果让程序再复杂一点,可以用其他的指令来取代这些信息),请看:
~~~
#!/bin/bash
clear
echo ""
echo "The Telephone Book"
echo ""
echo "1.pisplay A Telephone Number"
echo "2.Add A New Telephone Number"
echo ""
echo "Q Quit"
echo ""
echo "Enter your selection;”
read selection
case $selsction in
"1")
echo "You want to display a telephone number."
;;
"2")
echo "You want to add a new telephone number."
;;
"q")
exit 0
;;
"Q")
exit 0
;;
*)
echo "You made an invalid selection."
esac
~~~
为了避免用户退出程序时出现问题,最好像上面的例子那样,将字母的大、小写(如q和Q)都标上。
- 前言
- linux基础(一)------登录以及文件系统的了解
- linux基础(二)----linux常用命令积累
- linux基础(三)----linux命令系统学习----安装和登录命令
- linux基础(四)----linux命令系统学习----文件处理命令
- linux基础(五)----linux命令系统学习----系统管理命令
- linux基础(六)----linux命令系统学习----网络操作命令
- linux基础(七)----linux命令系统学习----系统安全相关命令
- linux基础(八)----linux命令系统学习----其它命令
- linux基础(九)----linux性能监测
- linux基础(十)----linux网络配置详细步骤---桥接模式和两台机子的远程通信
- linux基础(十一)----linux编程基础----变量
- linux基础(十二)----linux编程基础----与用户交互
- linux基础(十三)----linux编程基础----linux运算符
- linux基础(十四)----linux编程基础----linux条件控制语句----if else语句
- linux基础(十五)----linux编程基础----linux条件控制语句----case语句
- linux基础(十六)----linux编程基础----linux条件控制语句----多层嵌套控制结构
- linux基础(十七)----linux编程基础----linux循环控制语句----while循环
- linux基础(十八)----linux编程基础----linux循环控制语句----for in循环
- linux基础(十九)----linux编程基础----linux循环控制语句----break中断和continue继续
- linux基础(二十)----linux编程基础----子程序----函数