shell编程----case语句


1. case语句

基本格式为:

case expression in
pattern1)
	statement1
	;;
pattern2)
	statement2
	;;
....
*)
	statement
esac

  expression即可以是一个变量、一个数字、一个字符串,还可以是一个数学计算表达式,或者是命令的执行结果,只要能够得到expression的值就可以。
  pattern可以是一个数字、一个字符串,甚至是一个简单的正则表达式。
  运行过程:case会将expression的值与pattern1、pattern2…逐个进行匹配。如果expression和某个模式匹配,就会执行这个模式后面对应的所有语句,直到与减双分号;;才停止,然后整个case语句就执行完了,程序就会跳出整个case语句,执行esca后面的其它语句。如果expression没有匹配到任何一个模式,那么就执行*)后面的语句(*表示其它所有值),直到与减双分号;;或esca才结束。8)相当于if分置于句最后的else部分。

#!/bin/bash
echo "input integer number:"
read num
case $num in
	1)
		echo 'monday'
		;;
	2)
		echo 'tuesday'
		;;
	3)
		echo 'wednesday'
		;;
	4)
		echo 'thursday'
		;;
	5)
		echo 'friday'
		;;
	6)
		echo 'saturday'
		;;
	7)
		echo 'sunday'
		;;
	*)
		echo 'error'
esac

结果:
input integer number:
2
tuesday

input integer number:
11
error

2. case-in和正则表达式

case in的pattern部分支持简单的正则表达式,具体来说,可以使用以下几种表达式:

格式说明
*表示任意字符串
[abd]表示a、b、c三个字符中的任意一个
[m-n]表示从m到n的任意一个字符
[0-9a-zA-Z]表示任意一个字母或数字
|表示多重选择,类四逻辑运算中的或运算。比如,abc
#!/bin/bash
# -n 1:表示只读取一个字符,运行脚本后,只要用户输入一个字符,立即读取结束,不用等待按下回车键。
echo "input a character:"
read -n 1 char
case $char in
	[a-zA-Z])
		echo -e "\nletter"
		;;
	[0-9])
		echo -e "\ndigit"
		;;
	[,.!?])
		echo -e "\npunctuation"
		;;
	*)
		echo -e "\nerror"
esac

结果:
input a character:
4
digit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值