Linux Bash Shell学习(十二) 流程控制——select

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

  本文也即《Learning the bash Shell》3rd Edition的第五章Flow Control之读书笔记之四,但我们将不限于此。flow control是任何编程语言中很常用的部分,也包括了case。在这里,我们将继续学习他们。

  select和其他流控制不一样,在C这类变成语言中没有类似的语句(C中的select用于socket,是完全不同的含义,不是流控制)。格式如下:

select name  [in  list ]          
do           
    statements that can use  $name...           
done

  和for的格式相似,有和for一样,可以删除in list,即使用缺省的in $@。通过select,我们很容易创建菜单:

  执行时的时候,会根据list给出菜单,用户选择之后执行statement,所选择的,放置在$name,执行完之后,再次给出菜单,等等用户执行,一直循环下去,用户如果向跳出循环,可以使用break,下面是一个基本例子:

# select Test Sample         
# Test 1: Basic Usage Test          

function test          
{          
    echo 'select test 1'          
    mystack='a 123 red '          
    select entry in $mystack; do          
        #如果是有效的选择,则$entry中带有list中的值,如果是无效的选择,则为null,因此经常会根据此判断选择是否有效,例如用if [ $entry ]。          
        if [ $entry ]; then          
            echo "You select the choice '$entry'"          
            break **注:由于select是个循环,通过break来跳出循环           
        else          
            echo "Invaild selection"          
        fi           
   done          
}

test

执行结果         
$./select-test          
select test 1 **注:下面开始显示list中元素,并以菜单的方式出现*           
1) a          
2) 123          
3) red          
#? h **注:出现提示符号#?,等待用户输入选择,如果直接回车,则再次显示菜单           
Invaild selection          
#? 3          
You select the chioce 'red'

  在Linux Bash Shell学习(五):特殊文件、别名、选项和参数中对于提示符,提到了PS1和PS2,在select中,给出的提示符,即上面例子中的#?就是PS3,我们可以在shell中对PS3进行重新定义。例如PS3=”Please select a choice : ”

执行完statement,将继续出现提示符,等待下次输入,如果需要从select的循环中退出来,使用break。如果直接键入[回车],则再次显示菜单。

  相关链接: 我的Linux操作相关文章

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/skdhfdfc/article/details/83938325