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

发布了106 篇原创文章 · 获赞 1 · 访问量 2351

猜你喜欢

转载自blog.csdn.net/weixin_43384009/article/details/104316976