流程控制 -- select

流程控制之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:
原文地址:https://www.cnblogs.com/syy1757528181/p/13603844.html