流程控制之select语句
作用
select表达式是bash的一种扩展应用,擅长于"交互式场合"。用户可以从一组不同的值中进行选择
select可以实现菜单的功能;
select可以与case结合使用;
语法
PS3=""
select var in 列表
do
用户选择后,要执行的命令
break
done
#PS3与用户交互,默认为 #?,select默认使用PS3与用户交互,定义变量,传递给select var
#select负责打印菜单,序号) $var
#in可以省略,使用位置参数
案例
案例1:
[root@egon /]# cat select.sh
#!/bin/bash
PS3='choose one: '
select var in {A..D} #菜单
do
echo "your choose is $var"
echo "OK"
break # 跳出select,否则是死循环,可以省略
done
[root@egon /]# ./select.sh
1) A
2) B
3) C
4) D
choose one: 3
your choose is C
OK
案例2:若省略 in list 则select会把 $@ 当做列表项
[root@egon /]# cat select.sh
#!/bin/bash
PS3='choose one: ' # select默认使用PS3变量的值做提示符
select var
do
echo "your choose is $var"
echo "OK"
break # 跳出select,否则是死循环
done
[root@egon /]# ./select.sh 苹果 梨 蔬菜 香蕉 茄子
1) 苹果
2) 梨
3) 蔬菜
4) 香蕉
5) 茄子
choose one: 1
your choose is 苹果
OK
案例3:select与case
PS3="Please select a number: "
select name in zhangsan lisi wangwu zhaoliu
do
case $name in
zhangsan)
echo "Hello, zhangsan."
;;
lisi)
echo "Hello,lisi."
;;
wangwu)
echo "Hello, wangwu."
;;
zhaoliu)
echo "Hello, zhaoliu."
;;
*)
echo "Sorry, there is no such person."
;;
esac
done
[root@hass-11 script]# sh se2.sh
1) zhangsan
2) lisi
3) wangwu
4) zhaoliu
Please select a number: 2
Hello,lisi.
Please select a number: 3
Hello, wangwu.
Please select a number: