4. select 命令

select 命令提供选择性输入的命令,他提供一种交互式菜单和并循环让用户选择输入功能,它允许用户从一组选项中进行选择其中的一个,并将选择对应的值交给变量,并做后续的工作。

作用

  1. 创建一个简单的文本菜单界面。
  2. 自动显示带编号的选项列表。
  3. 等待用户输入选择。
  4. 将用户选择的值赋给变量。

官方语法

select NAME [in WORDS ... ;] do COMMANDS; done

上述 中括号([ ])内部的数据是可选的。WORDS 后跟 ... 说明前面的 字符串 WORDS 可以有零个、一个或多个。 WORDS ... 后面的分号 ; 表示 字符串列表的结束,如果后面 do 写在新的一行内,则 分号; 可以省略。

将上述一行整理成多行,并用中文表达需要填充的部分,即成为如下语法:

语法格式:

select 变量名 [in 字符串1 字符串2 ... ; ] do
    命令块;
done

select 变量名 [in 字符串1 字符串2 ...]
do
    命令块;
done

语法说明:

示例:

写一个 Shell 程序 test_select.sh ,实现如下的四个功能:

  1. 创建 select.txt 文件
  2. 删除 select.txt 文件
  3. 查看当前的所有文件
  4. 退出此功能

写入程序如下:

#!/bin/bash

PS3="请输入你的选项项: "  # 设置选择提示符

select option in "创建文件" "删除文件" "列出所有文件" "退出"
do
    case $option in
        "创建文件")
            touch select.txt && echo "成功创建文件 select.txt"
            ;;
        "删除文件")
            rm select.txt && echo "成功删除文件 select.txt"
            ;;
        "列出所有文件")
            ls
            ;;
        "退出")
            echo "退出..."
            break
            ;;
        *)
            echo "不可用的选项"
            ;;
    esac
done

运行效果如下:

weimingze@mzstudio:~$ bash test_select.sh
1) 创建文件
2) 删除文件
3) 列出所有文件
4) 退出
请输入你的选项项: 1
成功创建文件 select.txt
请输入你的选项项: 2
成功删除文件 select.txt
请输入你的选项项: 2
rm: cannot remove 'select.txt': No such file or directory
请输入你的选项项: 1
成功创建文件 select.txt
请输入你的选项项: 3
select.txt  test_select.sh  下载  公共  图片  文档  桌面  模板  视频  音乐
请输入你的选项项: 4
退出...
weimingze@mzstudio:~$ 

练习: