shell case in 条件结构
在C语言中,实现选择程序结构,除了使用if-else语句,还有另外一个选择:switch-case。在shell脚本中也是类似,除了使用if-else,也可以使用case in 来实现选择程序结构:
case $模式名 in
模式1)
命令1
;;
模式2)
命令2
;;
模式3)
命令3
;;
*)
其他条件下,这里的命令
esac
每个模式必须以右括号结束,双分号 ;; 类似于C语言中的break,在每个case分支后面添加;;,程序执行完每个分支后就停止执行,不继续往下执行了。整个case语句之后,使用esac结束。
编写一个脚本程序,用户输入1~12中的一个数字,脚本打印出对应的月份的英文单词:
#!/bin/bash
echo input month[1~12]:
read month
case $month in
1)
echo January
;;
2)
echo February
;;
3)
echo March
;;
4)
echo April
;;
5)
echo May
;;
6)
echo June
;;
7)
echo July
;;
7)
echo August
;;
8)
echo September
;;
9)
echo October
;;
10)
echo November
;;
11)
echo December
;;
12)
echo Sunday
;;
*)
echo input error
esac
脚本运行结果:
root@pc:/home/demo# ./hello.sh
input month[1~12]:
2
February
root@pc:/home/demo# ./hello.sh
input month[1~12]:
13
input error
case的每个选择分支中,可以是一个具体的值、字符串,甚至还可以是一个模式匹配表达式。如上面程序中的 * 就表示匹配任意值。
- *:用来匹配任意字符
- [1234]:匹配1、2、3、4数字中的任意一个
- [1-12]:匹配1~12数字中的任意一个
- 123|abc:匹配字符串123或abc
编写一个脚本程序,输入月份,打印出该月份对应的季节:
#!/bin/bash
echo input month[1~12]:
read month
case $month in
[1-3])
echo Spring
;;
[4-6])
echo Summer
;;
[7-9])
echo Autumn
;;
10|11|12)
echo Winter
;;
*)
echo input error
esac
脚本运行结果:
root@pc:/home/demo# ./hello.sh
input a[1~12]:
2
Spring
root@pc:/home/demo# ./hello.sh
input a[1~12]:
12
Winter
root@pc:/home/demo# ./hello.sh
input a[1~12]:
13
input error
《Linux三剑客》视频教程:Linux下开发工具vim、Git、Makefile、autotools、qemu、debug精讲,从零开始一步一步写项目的Makefile,提供企业级Makefile模板,Git操作实战,vim从新手到高手,一步一步打造类似Source Insight的IDE!详情点击:王利涛老师个人淘宝店:Linux三剑客