select循环与菜单
select循环主要用于创建菜单,按数字排序list指定的顺序排序,并列出在标准输出,利用PS3列出提示符进行输入选择
用法:
select VARIABLE in list do 循环体命令 done
PS3提示语定义:
在脚本中脚本代码的第一行加入即可
PS3=“提示语”
用户输入相应的数字,就会执行相对应的命令,用户输入的选项被保存在REPLY中
select经常和case配合使用,一个指定菜单,一个执行菜单指定的相对应的命令。
select是个无限循环,因此要记住用break命令退出循环,或者用exit命令结束脚本运行。
select与for循环类似,可以省略inlist,此时在执行脚本是指定参数为位置变量传给select语句。
##############################################################################################################
多分支case语句
case语句和if elif else 语句一样都是多分支条件语句,不过和if多分支条件语句不同的是,case语句只能判断一种条件关系,而if else 语句可以判断多种条件关系
用法:
case $VARIABLE(变量名) in “值1”) ;; “值2”) ;; ………… esac
case语句支持glob风格的通配符进行模糊匹配(应用在“值1”|“值2"…..)
*:任意长度的任意字符
?:任意单个字符
[] : 指定范围内的任意单个字符
a|b:条件1或条件2
select与case综合示例:输入指定命令,显示对应的信息
#!/bin/bash # ######定义函数开始############## meminfo() { clear free -m } diskinfo() { clear df -k } logged() { clear who } ######定义函数结束############## ######PS3定义提示语############## PS3="input option (input "5" is help) :" ########select语句定义菜单列表######### select opt in "display meminfo" "display diskinfo" "display logged user" "Exit program" "help";do case $opt in //应用case语句,变量是select语句定义的菜单变量,case语句会一一进行匹配select的变量中的值 "display meminfo") //注意菜单上的名称必须与case语句选项一致 meminfo ;; //调用相对应的函数 "display diskinfo") //如果select的值对应到此值,则指定相对应的函数程序 diskinfo ;; //双分号(;;)为语句结束符,如果此语句匹配到依旧不退出,继续向下匹配 "display logged user") logged ;; "Exit program") break ;; "help") echo "Usage (1.mem|2.disk|3.loguser|4.exit|5.help)" ;; *) //如果上方所有case语句都不能匹配到,则执行此条程序命令。 echo "sorry,Error input!" ;; esac //case语句结束 done //select语句结束
原创文章,作者:Lii,如若转载,请注明出处:http://www.178linux.com/38432