bashshell中,select使用举例(代码片段)

author author     2022-12-05     265

关键词:

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

运行结果展示:

[[email protected] ~]# 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

运行结果展示:

[[email protected] ~]# 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 中判断值是否在数组中的用法。

mybatis-nosuchmethoderror:net.sf.jsqlparser.statement.select.setoperationlist.getselects()ljava/(代码片

  昨天在修改一个接口功能时,需要在原来的接口上提供分页和模糊查询,就使用了分页PageHelper来做,但是在mybatis的xml文件中又使用了UNION来合并查询结果,导致项目启动直接报错   Handlerprocessingfailed;nestedexcep... 查看详情

sh检查bashshell脚本中是否存在输入参数(代码片段)

查看详情

[redux/mobx]举例说明怎么在redux中定义action?(代码片段)

...#xff1f;利用actionCreator//用户选择需要显示的subredditexportconstSELECT_SUBREDDIT='SELECT_SUBREDDIT'exportfunctionselectSubreddit(subreddit)returntype:SELECT_SUBREDDIT,subreddit个人简介我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,... 查看详情

查询中使用全文索引(代码片段)

...入了数据,并且创建了全文索引,表中内容如下:mysql>select*fromtb3;+------------+-------------------------------------+|FTS_DOC_ID|body|+------------+-------------------------------------+|1|pLeaseporridgeinthepot||2|pleasesaysorr 查看详情

bashshell相关特性(代码片段)

bash基础特性之:命令历史命令历史:shell进程会在会话中保存此前用户提交执行过的命令;查看历史命令:~]#history定制history的功能,可通过环境变量来实现;HISISIZE:shell进程可保留的命令历史条数;HISIFILE:持久保存命令历史... 查看详情

hive中joinsemijoinouterjoin举例详解

HIVE中join、semijoin、outerjoin举例详解举例子:hive>select*fromzz0; 111111 222222 888888 hive>select*fromzz1; 111111 333333 444444 888888hive>select*fromzz0joinzz1onzz0.uid=zz1.uid; 111111 111111 888888 888888 hive>select*fromzz0leftouterjoinzz1onzz0.uid&... 查看详情

了解基本的bashshell命令(代码片段)

  本节内容主要介绍如何使用bashshell提供的基本命令处理Linux文件和目录;1、启动shell  shell是一个可以交互访问的Linux系统程序,它的运行与普通程序相同,系统启动的shell取决于用户ID的配置;  bash命令常用的参数: ... 查看详情

如何在bashshell脚本中使用expect

参考技术A1、首先检查你机器上有没有expect(我知道ubuntu默认是没有安装的)ls/usr/bin|grepexpect看看有没有装expect2、没有的话需要安装在ubuntu的软件安装中心,搜索tcl和tk和expect并安装;也可以命令行输入sudoapt-getinstalltcltkexpect3.环... 查看详情

layui表格渲染中模板的使用举例(代码片段)

1实例一:2field:‘status‘,      align:‘center‘,      title:‘活动状态‘,templet:function(d)4if(d.status=="1")5return"<spanclass=‘btnNot‘style=‘background:rgba(13,185,51,0.72);padding:6px;border-radius:3px; 查看详情

vue中computed的使用场景举例(代码片段)

最新学习vue在对computed的使用场景不是特别明白,直到看到这个例子。当我修改第一行和第二行时,第三行就会发生改变。改变前:改变后:代码:<formid="app"action=""><div><label>姓&... 查看详情

vue中computed的使用场景举例(代码片段)

最新学习vue在对computed的使用场景不是特别明白,直到看到这个例子。当我修改第一行和第二行时,第三行就会发生改变。改变前:改变后:代码:<formid="app"action=""><div><label>姓&... 查看详情

我的android进阶之旅androidstudio中使用git提交代码报错:can‘tcommitchangesfrommultiplechangelistsatonce(代码片(代码片段)

一、错误描述今天在AndroidStudio中,Commit代码的时候报错了,然后解决了。现在模拟复现下之前的错误,如下所示:0filecommitted,2filesfailedtocommit:1、测试多个changelist提交Can\'tcommitchangesfrommultiplechangelistsatonce报错截图为:二、分析错... 查看详情

linuxbashshell中变量的5个易错点(代码片段)

Linux中的Bash脚本支持对变量的操作,下面咸鱼将介绍LinuxBashShell中关于变量的5个易错点 因为编程习惯,这类现象往往发生在大多数使用过其他流行编程语言的程序员身上 变量赋值对于许多编程语言(例如Python),变量赋... 查看详情

sylixos中select原理及使用分析(代码片段)

1.select接口简介1.1select接口使用用例select是操作系统多路I/O复用技术实现的方式之一。多路I/O复用技术大致使用场景为:构造一张感兴趣的文件描述符列表,然后调用多路复用的IO接口,在接口中进行阻塞,直到这些描述符中的... 查看详情

003_时间片轮转调度及中断函数(代码片段)

(一)使用时间片轮转调度功能条件(二)在os_cfg.h头文件中将OS_CFG_SCHED_ROUND_ROBIN_EN置一#defineOS_CFG_SCHED_ROUND_ROBIN_EN1u(三)调用OSSchedRoundRobinCfg函数,在start中调用这个函数#ifOS_CFG_SCHED_ROUND_ROBIN_EN//当使用时间片轮转的时候//使能... 查看详情

bashshell命令(代码片段)

3.BashShell命令3.1基础常识1lijunbo@lijunbo-virtual-machine:~/Desktop$用户名@机器名:当前所在目录$等待用户输入~代表当前用户home目录/代表根目录man[命令]:显示该命令的用法Windows盘符,文件目录\\反斜线,Linux一切皆文件,文件目录/正... 查看详情

vueui打开可视化面板一片空白(代码片段)

真离谱啊打开后一片空白点击左下角小房间或者url改为:http://localhost:8000/project/select盲猜路由异常导致 查看详情

java示例代码_在Hibernate中使用HibernateDataOSupport类使用自定义select语句

java示例代码_在Hibernate中使用HibernateDataOSupport类使用自定义select语句 查看详情