Linuxwilliam hill官网
直播中

慧心的眼眸

7年用户 631经验值
私信 关注
[经验]

Linux Shell系列教程之(十四) Shell Select教程

  Select 搭配 case来使用,可以完成很多复杂的菜单控制选项。

  select和其他流控制不一样,在C这类编程语言中并没有类似的语句,今天就为大家介绍下Shell Select语句的用法。

  一、Shell Select语句语法

  Shell中Select语句的语法如下所示:

  select name [in list ]

  do

  statements that can use $name...

  done

  说明:select首先会产生list列表中的菜单选项,然后执行下方do…done之间的语句。用户选择的菜单项会保存在$name变量中。

  另外:select命令使用PS3提示符,默认为(#?);

  在Select使用中,可以搭配PS3=’string’来设置提示字符串。

  二、Shell Select语句的例子

  还是老样子,通过示例来学习Shell select的用法:

  #!/bin/bash

  #Author:linuxdaxue.com

  #Date:2016-05-30

  #Desc:Shell select 练习

  PS3='Please choose your number: ' # 设置提示符字串.

  echo

  select number in "one" "two" "three" "four" "five"

  do

  echo

  echo "Your choose is $number."

  echo

  break

  done

  exit 0

  说明:上面例子给用户呈现了一个菜单让用户选择,然后将用户选择的菜单项显示出来。

  这是一个最基本的例子,主要为大家展示了select的基础用法。当然,你也可以将break去掉,让程序一直循环下去。

  下面是去掉break后输出:

  $./select.sh

  1) one

  2) two

  3) three

  4) four

  5) five

  Please choose your number: 1

  Your choose is one.

  Please choose your number: 2

  Your choose is two.

  Please choose your number: 3

  Your choose is three.

  Please choose your number: 4

  Your choose is four.

  Please choose your number: 5

  Your choose is five.

  然后我们将例子稍稍修改下,加入case…esac语句:

  #!/bin/bash

  #Author:linuxdaxue.com

  #Date:2016-05-30

  #Desc:Shell select case 练习

  PS3='Please choose your number: ' # 设置提示符字串.

  echo

  select number in "one" "two" "three" "four" "five"

  do

  case $number in

  one )

  echo Hello one!

  ;;

  two )

  echo Hello two!

  ;;

  * )

  echo

  echo "Your choose is $number."

  echo

  ;;

  esac

  #break

  done

  exit 0

  这样的话,case会对用户的每一个选项进行处理,然后执行相应的语句。输出如下:

  $./select2.sh

  1) one

  2) two

  3) three

  4) four

  5) five

  Please choose your number: 1

  Hello one!

  Please choose your number: 2

  Hello two!

  Please choose your number: 3

  Your choose is three.

  Please choose your number: 4

  Your choose is four.

  将这些语句进行修改拓展,就可以写出非常复杂的脚本。怎么样,是不是非常强大呢,赶快试试吧!

linux学习交流群:690327559

更多回帖

发帖
×
20
完善资料,
赚取积分