shell编程之select
select控制结构(在tcsh中不可用)基于Korn Shell中的控制结构 select语句首先显示一个菜单,然后根据用户的选择给变量赋予相应的值,最后执行一系列命令
其语法如下:
select varname in list
do
commands
done
select 表达式是一种bash的扩展应用,动作包括: 自动用1,2,3,4列出菜单 (没有echo指令,自动显示菜单) 自动read输入选择 (没有 read指令,自动输入) 赋值给变量 (没有赋值指令,自动输入数字后,赋值字符串给变量)
select结构显示arg项的菜单。加入忽略关键字in和参数列表,select控制语句就用位置参数来取代arg项。select的菜单格式化为在每一项前加一个数字select结构用变量LINES和变量COLUMNS的值来确定显示区的大小(LINES的默认值为24,COLUMNS的默认值为80)。
在select语句输出菜单后,它就会显示出PS3的值,select提示符PS3的默认值为“?#”,但一般将其设置为一个更有意义的值。
在PS3提示符后输入一个合法的数字(在菜单范围中),select语句就把varname设置为与该数字对应的参数。非法的输入会使shell把varname设置为空,在这两种情况下,select将把用户的响应存储在关键字变量REPLY中,然后执行do与done之间的命令。若只按RETURN键而没有做任何选择,shell就会重新显示菜单和PS3提示符。
举例说明:
脚本:
8 #!/bin/bash 9 PS3="What sports do you like?" 10 select menu in basketball football tableball 11 do 12 case $menu in 13 basketball) 14 echo "$menu" is your favorite sport! 15 ;; 16 football) 17 echo "$menu" is your favorite sport! 18 ;; 19 tableball) 20 echo "$menu" is your favirite sport! 21 ;; 22 *) 23 echo "Your input is false!" 24 break 25 ;; 26 esac 27 done
执行结果:
[root@localhost bin]# select.sh 1) basketball 2) football 3) tableball What sports do you like?basketball Your input is false! [root@localhost bin]# select.sh 1) basketball 2) football 3) tableball What sports do you like?1 basketball is your favorite sport! What sports do you like?2 football is your favorite sport! What sports do you like?3 tableball is your favirite sport! What sports do you like?g Your input is false!
原创文章,作者:YOUNG,如若转载,请注明出处:http://www.178linux.com/39003