码迷,mamicode.com
首页 > 系统相关 > 详细

Bash shell 中,select 使用举例

时间:2019-04-03 19:24:17      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:文章   背景   选择   不同   class   name   one   echo   hostname   

Bash shell 中,select 使用举例

一 背景

在最近的运维工作中,写了很多脚本,在写这些脚本时发现了一些高效的用法,现将 select 的用法简单介绍一下。

二 使用举例

select 表达式是 bash 的一种扩展应用,擅长于交互式场合。用户可以从一组不同的值中进行选择。格式如下:

select var in ... ; do
    ...
done

2.1 单独使用 select

#!/bin/bash
Hostname=( ‘host1‘ ‘host2‘ ‘host3‘ )
select host in ${Hostname[@]}; do
    if [[ "${Hostname[@]/${host}/}" != "${Hostname[@]}" ]] ; then
        echo "You select host: ${host}";
    else
        echo "The host is not exist! ";
        break;
    fi
done

运行结果展示:

[root@gysl ~]# sh select.sh
1) host1
2) host2
3) host3
#? 1
You select host: host1
#? 2
You select host: host2
#? 3
You select host: host3
#? 2
You select host: host2
#? 3
You select host: host3
#? 1
You select host: host1
#? 6
The host is not exist!

脚本中增加了一个判断,如果选择的主机不在指定范围,那么结束本次执行。

2.2 结合 case 使用

#!/bin/bash
Hostname=( ‘host1‘ ‘host2‘ ‘host3‘ )
PS3="Please input the number of host: "
select host in ${Hostname[@]}; do
    case ${host} in
    ‘host1‘)
        echo "This host is: ${host}. "
    ;;
    ‘host2‘)
        echo "This host is: ${host}. "
    ;;
    ‘host3‘)
        echo "This host is: ${host}. "
    ;;
    *)
        echo "The host is not exist! "
        break;
   esac
done

运行结果展示:

[root@gysl ~]# sh select.sh
1) host1
2) host2
3) host3
Please input the number of host: 1
This host is: host1.
Please input the number of host: 3
This host is: host3.
Please input the number of host: 4
The host is not exist!

在很多场景中,结合 case 语句使用显得更加方便。上面的脚本中,重新定义了 PS3 的值,默认情况下 PS3 的值是:"#?"。

三 总结

3.1 select 看起来似乎不起眼,但是在交互式场景中却非常有用,各种用法希望大家多多总结。

3.2 文章中还涉及到了 bash shell 中判断值是否在数组中的用法。

Bash shell 中,select 使用举例

标签:文章   背景   选择   不同   class   name   one   echo   hostname   

原文地址:https://blog.51cto.com/3842834/2373852

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!