select循环与菜单的用法
1、select循环主要用于创建菜单,其按数字顺序排列并且显示在标准错误输出上,并显示PS3提示符,等待用户输入选择内容,用户一旦输入菜单中的某个数字,则执行相应菜单中的命令。用户输入的内容被保存在内置变量REPLY中。
select的用法:
select variable [in list] ;
do
循环体命令
don
示例1:
[root@liang7 bin]# cat select1.sh #!/bin/bash select menu in BJ SH GZ SZ HN ; do echo "您选择的城市为:$menu" done
2、select是一个无限循环,会一直让进行选择并执行循环体,因此一般使用break命令退出循环,或使用exit命令终止脚本,也可以按ctrl+c退出脚本。
示例2:
[root@liang7 bin]# cat select1.sh #!/bin/bash select menu in BJ SH GZ SZ HN; do echo "您选择的城市为:$menu" break done
3、因为select默认的提示符是PS3提示符,执行select时的提示信息不明确,不知道为什么要选择,因此使用select前可以先定义PS3的提示信息。
示例3:
[root@liang7 bin]# cat select1.sh #!/bin/bash PS3="请按数字选择您喜欢的城市:" select menu in BJ SH GZ SZ HN; do echo "您选择的城市为:$menu" break done
4、select经常和case结合使用,实现对选择的结果进行匹配
示例4:
[root@liang7 bin]# cat select1.sh #!/bin/bash PS3="请按数字选择您喜欢的城市:" select menu in BJ SH GZ SZ HN; do case $menu in BJ) echo "北京简称京,是中华人民共和国的首都,也是中国政治、文化、交通、旅游和国际交往的中心。" ;; SH) echo "上海简称沪,别称申,是中国最大的经济中心城市,也是国际著名的港口城市。" ;; GZ) echo "广州简称穗,别称羊城,中国第三大城市,中国最主要的对外开放城市之一,作为对外贸易的窗口,外国人士众多,被称为“第三世界的首都”,是全国华侨最多的大城市。" ;; SZ) echo "深圳,别称鹏城,广东省辖市,深圳是中国改革开放建立的第一个经济特区,是中国改革开放的窗口,已发展为有一定影响力的国际化城市。" ;; HN) echo "河南,简称“豫”,省会郑州。位于黄河中下游,是中华民族与中华文明的主要发祥地之一,文物古迹众多,旅游资源丰富。历史上先后有20多个朝代在这里建都。" ;; *) echo "您选择的城市不在列表范围内" ;; esac break done
5、用户输入的内容被保存在内置变量REPLY中,可以调用REPLY变量显示输入的内容。
示例5:
[root@liang7 bin]# cat select1.sh #!/bin/bash PS3="请按数字选择您喜欢的城市:" select menu in BJ SH GZ SZ HN; do case $menu in BJ) echo "您输入的内容为:$REPLY" echo "北京简称京,是中华人民共和国的首都,也是中国政治、文化、交通、旅游和国际交往的中心。" ;; SH) echo "您输入的内容为:$REPLY" echo "上海简称沪,别称申,是中国最大的经济中心城市,也是国际著名的港口城市。" ;; GZ) echo "您输入的内容为:$REPLY" echo "广州简称穗,别称羊城,中国第三大城市,中国最主要的对外开放城市之一,作为对外贸易的窗口,外国人士众多,被称为“第三世界的首都”,是全国华侨最多的大城市。" ;; SZ) echo "您输入的内容为:$REPLY" echo "深圳,别称鹏城,广东省辖市,深圳是中国改革开放建立的第一个经济特区,是中国改革开放的窗口,已发展为有一定影响力的国际化城市。" ;; HN) echo "您输入的内容为:$REPLY" echo "河南,简称“豫”,省会郑州。位于黄河中下游,是中华民族与中华文明的主要发祥地之一,文物古迹众多,旅游资源丰富。历史上先后有20多个朝代在这里建都。" ;; *) echo "您输入的内容为:$REPLY" echo "您选择的城市不在列表范围内" ;; esac break done
6、一般情况下select中的菜单是写死的,但有的时候菜单是来回变化的,这时可以在脚本后跟上参数当菜单选项。
示例6:
[root@liang7 bin]# cat select1.sh #!/bin/bash PS3="请按数字选择您喜欢的城市:" select menu do case $menu in BJ) echo "您输入的内容为:$REPLY" echo "北京简称京,是中华人民共和国的首都,也是中国政治、文化、交通、旅游和国际交往的中心。" ;; SH) echo "您输入的内容为:$REPLY" echo "上海简称沪,别称申,是中国最大的经济中心城市,也是国际著名的港口城市。" ;; GZ) echo "您输入的内容为:$REPLY" echo "广州简称穗,别称羊城,中国第三大城市,中国最主要的对外开放城市之一,作为对外贸易的窗口,外国人士众多,被称为“第三世界的首都”,是全国华侨最多的大城市。" ;; SZ) echo "您输入的内容为:$REPLY" echo "深圳,别称鹏城,广东省辖市,深圳是中国改革开放建立的第一个经济特区,是中国改革开放的窗口,已发展为有一定影响力的国际化城市。" ;; HN) echo "您输入的内容为:$REPLY" echo "河南,简称“豫”,省会郑州。位于黄河中下游,是中华民族与中华文明的主要发祥地之一,文物古迹众多,旅游资源丰富。历史上先后有20多个朝代在这里建都。" ;; *) echo "您输入的内容为:$REPLY" echo "您选择的城市不在列表范围内" ;; esac break done
7、select还可以将命令作为菜单,选择某个命令则执行某个命令。
示例7:
[root@liang7 bin]# cat select2.sh #!/bin/bash PS3="请选择您要执行的命令:" select CMD in ls "ls -l" pwd hostname do $CMD break done
原创文章,作者:苦涩咖啡,如若转载,请注明出处:http://www.178linux.com/38232
评论列表(1条)
对命令的理解很深刻,望以后多练习,争取完全掌握。