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

  本文也即《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操作相关文章

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值