文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>select语句和菜单

select语句和菜单

时间:2009-07-11  来源:流星陨落

here文档是生成菜单的简便方法,而bash提供了另一种循环机制,称为select循环,它主要用于创建菜单。 按数字顺序排列的菜单项将列表显示在标准错误输出上,并显示PS3提示符请求用户输入(默认时,PS3值为“#?”)。显示PS3提示符后,shell等待用户输入,输入的应当是菜单列表中的一个数字。输入值保存在一个shell的特殊变量REPLY中,它与选项列表中相应行的括号右面的字符串相关联。

case命令和select命令联合使用时,用户可以从菜单中进行选择,并基于选项执行相应的命令。LINES和COLUMNS变量,用来确定菜单在终端上的布局(这两个变量是2.x版bash的内置变量,但在此之前的bash版本中没有。如果您所使用的bash shell中它们还没有定义,可以在.bash_profile文件中定义并导出它们)。输出被显示在标准错误上,每一项的开头是一个数字和右括号,PS3提示符显示在菜单底部。因为select命令是一个循环命令,因此,一定要记住用break命令退出循环,或者用exit命令退出脚本程序。

格式

select var in wordlist

do

命令(或命令组)

done

范例14-42

(脚本)

    #!/bin/bash

    # Scriptname: runit

1   PS3="Select a program to execute: "

2   select program  in 'ls -F' pwd date

3   do

4        $program

5   done

(命令行)

Select a program to execute: 2

1) ls -F

2) pwd

3) date

/home/ellie

Select a program to execute: 1

1) ls -F

2) pwd

3) date

12abcrty abc12  doit* progs/  xyz

Select a program to execute: 3

1) ls -F

2) pwd

3) date

Sun Mar 12 13:28:25 PST 2004

说明

1. PS3变量被赋值为提示语句,出现在菜单选项的下面。而默认的PS3提示符为“$#”,并送到标准错误输出上,即屏幕上。

2. select循环由program变量和显示在菜单上的词列表(ls –F,pwd和date)组成。这里列表中的词都是UNIX/Linux命令,当然它们也可以是任何其他的词语,如red,green,yellow,或是cheese,bread,milk,crackers等。如果词语中有空格,就要用引号把词括起来,如 ’ls –F’。

3. do 关键字表示select循环开始。

4. 用户在在菜单中选择数字后,相当于选择了括号右边的词语的值,例如,如果选择了数字2,2与词pwd关联,那么pwd将被赋值给变量program。$program解释为命令pwd,并执行该命令。

5. done命令标志着select循环体中的语句结束,控制返回到循环顶部,循环将一直执行,直到用户按下Ctrl+C组合键。

范例14-43

(脚本)

    #!/bin/bash

    # Scriptname: goodboys

1   PS3="Please choose one of the three boys : "

2   select choice in tom dan guy

3   do

4       case "$choice" in

        tom)

            echo Tom is a cool dude!

5            break;;         # break out of the select loop

6       dan | guy )

            echo Dan and Guy are both wonderful.

            break;;

        *)

7           echo "$REPLY is not one of your choices" 1>&2

            echo "Try again."

            ;;

8       esac

9   done

(命令行)

$ goodboys

1) tom

2) dan

3) guy

Please choose one of the three boys : 2

Dan and Guy are both wonderful.

$ goodboys

1) tom

2) dan

3) guy

Please choose one of the three boys : 4

4 is not one of your choices

Try again.

Please choose one of the three boys : 1

Tom is a cool dude!

$

说明

1. PS3提示符将打印在菜单的下面。

2. 进入select循环,列表中的词显示为一个按数字排序的菜单。

3. 循环体开始。

4. 变量choice被赋值为列表中的第一个值,然后该值从列表中移出,下一项将为第一个值。

5. break语句把循环控制跳转到第9行。

6. 如果选择了guy或dan,则执行后面的echo命令,echo命令后是break命令,把控制跳转到第9行。

7. 内置的REPLY变量中保存当前列表中选项的序号,如1,2或3。

8. esac标志着case命令的结束。

9. done标志着select循环的结束。

 

相关阅读 更多 +
排行榜 更多 +
盒子小镇2游戏手机版下载

盒子小镇2游戏手机版下载

冒险解谜 下载
世界盒子模组版下载最新版本

世界盒子模组版下载最新版本

模拟经营 下载
音乐搜索app最新版本下载

音乐搜索app最新版本下载

趣味娱乐 下载