【shell】select in实现终端交互场景

news2024/11/25 0:40:50

文章目录

      • 序言
      • 1. select in语句及其语法
      • 2. select in和case语句相结合
      • 3. 执行界面示例

序言

  • shell脚本实现简单的终端交互功能,根据用户不同输入执行不同功能脚本

1. select in语句及其语法

  • select in是shell独有的一种循环,非常适合终端交互场景

  • 该语句可以显示出带编号的菜单,用户输入不同的编号就可以选择不同菜单,并执行不同功能

  • select in语法:

    select variable in value_list
    do
        statements
    done
    
    • variable 表示变量,value_list 表示取值列表,in 是 shell 中的关键字
  • 语法解释:

    运行到 select 语句后,取值列表 value_list 中的内容会以菜单的形式显示出来,
    用户输入菜单编号,就表示选中了某个值,这个值就会赋给变量variable,
    然后再执行循环体中的 statements;
    
  • 每次循环时 select 都会要求用户输入菜单编号,并使用环境变量 PS3 的值作为提示符,PS3 的默认值为#?,修改 PS3 的值就可以修改提示符;见2. 中的例子

  • CTRL + D可以结束select in循环

2. select in和case语句相结合

  • 一个压缩tar包 | 推送tar包到远程仓库的脚本
#! /bin/bash

function compress()
{...}

function push()
{...}

function compress_and_push()
{...}

PS3="选择你想执行的操作: "

select operation in "制作tar包" "推送tar包" "制作并推送tar包"
do
    case $operation in
        "制作tar包")
            read -p "请输入包名, 如xxx.tar.gz: " pkg_name
            compress $pkg_name
            break
            ;;
        "推送tar包")
            read -p "请输入包名, 如xxx.tar.gz: " pkg_name
            push $pkg_name
            break
            ;;
        "制作并推送tar包")
            read -p "请输入包名, 如xxx.tar.gz: " pkg_name
            compress_push $pkg_name
            break
            ;;
        *)
            echo "输入错误,请重新输入"
    esac
done

3. 执行界面示例

在这里插入图片描述

 


【参考文章】
[1]. select in语法说明 (语法说明)
[2]. select in语句实例

created by shuaixio, 2024.03.30

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1557787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

链表的极致——带头双向循环链表

​ 文章目录 双向带头循环链表简介:双向:带头:特点:链表带头节点的好处: 循环:特点:循环的好处: 双向带头循环链表的接口函数实现准备工作: 初始化链表(头结…

C++:数据类型—布尔(12)

布尔类型代表就是真和假(bool) 真就是1(true) 假就是0(false) 也可以任务非0即为真 bool 直占用1个字节大小 语法:bool 变量名 (true | false) 提示:bool在后期判断也是…

深度学习pytorch——经典卷积网络之ResNet(持续更新)

错误率前五的神经网络(图-1): 图-1 可以很直观的看到,随着层数的增加Error也在逐渐降低,因此深度是非常重要的,但是学习更好的网络模型和堆叠层数一样简单吗?通过实现表明(图-2&…

《自动机理论、语言和计算导论》阅读笔记:p49-p67

《自动机理论、语言和计算导论》学习第4天,p49-p67总结,总计19页。 一、技术总结 1.Deterministic Finite Automata(DFA) vs Nondeterministic Finite Automata(NFA) (1)DFA定义 (2)NFA定义 A “nonedeterministic” finite automata has the power t…

python之绘制曲线

以同一种型号的钻头,钻21种类型的板材,每种板材使用3根钻头,分别在钻第一个孔、2001孔、4001孔和6001孔前测量钻头外径,收集数据。 1、测试方法 采用激光钻径分选机测量微钻钻径以评估微钻外径磨损,测量从钻尖起始间…

C语言-文件

目录 1.什么是文件?1.1 程序文件1.2 数据文件 2.二进制文件和文本文件?3.文件的打开和关闭4.文件的顺序读写5.文件的随机读写5.1 fseek5.2 ftell5.3 rewind 6.文件读取结束的判定7.文件缓冲区 1.什么是文件? 磁盘上的文件就是文件 一般包含两…

使用pytorch构建带梯度惩罚的Wasserstein GAN(WGAN-GP)网络模型

本文为此系列的第三篇WGAN-GP,上一篇为DCGAN。文中仍然不会过多详细的讲解之前写过的,只会写WGAN-GP相对于之前版本的改进点,若有不懂的可以重点看第一篇比较详细。 原理 具有梯度惩罚的 Wasserstein GAN (WGAN-GP)可以解决 GAN 的一些稳定性…

caffe源码编译安装

一、前置准备 (1)vs2015 目前不要想着2019这些工具了,成功率太低了,就老老实实用vs2015吧 解决“VS2015安装包丢失或损坏“问题_vs2015跳过包会影响使用吗-CSDN博客 注意在安装vs2015过程中老是出现这个问题,其实就是缺少两个证书,安装完后就可以正常安装vs2015了,注意…

大数据面试专题 -- kafka

1、什么是消息队列? 是一个用于存放数据的组件,用于系统之间或者是模块之间的消息传递。 2、消息队列的应用场景? 主要是用于模块之间的解耦合、异步处理、日志处理、流量削峰 3、什么是kafka? kafka是一种基于订阅发布模式的…

AE——重构数字(Pytorch+mnist)

1、简介 AE(自编码器)由编码器和解码器组成,编码器将输入数据映射到潜在空间,解码器将潜在表示映射回原始输入空间。AE的训练目标通常是最小化重构误差,即尽可能地重构输入数据,使得解码器输出与原始输入尽…

什么是nginx正向代理和反向代理?

什么是代理? 代理(Proxy), 简单理解就是自己做不了的事情或实现不了的功能,委托别人去做。 什么是正向代理? 在nginx中,正向代理指委托者是客户端,即被代理的对象是客户端 在这幅图中,由于左边内网中…

如何解决kafka rebalance导致的暂时性不能消费数据问题

文章目录 背景思考答案排它故障转移共享 背景 之前在review同组其它业务的时候,发现竟然把kafka去掉了,问了下原因,有一个单独的服务,我们可以把它称为agent,就是这个服务是动态扩缩容的,会采集一些指标&a…

k8s的pod访问service的方式

背景 在k8s中容器访问某个service服务时有两种方式,一种是把每个要访问的service的ip注入到客户端pod的环境变量中,另一种是客户端pod先通过DNS服务器查找对应service的ip地址,然后在通过这个service ip地址访问对应的service服务 pod客户端…

HarmonyOS 应用开发之FA模型访问Stage模型DataShareExtensionAbility

概述 无论FA模型还是Stage模型,数据读写功能都包含客户端和服务端两部分。 FA模型中,客户端是由DataAbilityHelper提供对外接口,服务端是由DataAbility提供数据库的读写服务。 Stage模型中,客户端是由DataShareHelper提供对外接…

腾讯云2核2G服务器优惠价格,61元一年

腾讯云2核2G服务器多少钱一年?轻量服务器61元一年,CVM 2核2G S5服务器313.2元15个月,轻量2核2G3M带宽、40系统盘,云服务器CVM S5实例是2核2G、50G系统盘。腾讯云2核2G服务器优惠活动 txybk.com/go/txy 链接打开如下图:…

java数组与集合框架(三)--Map,Hashtable,HashMap,LinkedHashMap,TreeMap

Map集合: Map接口: 基于 键(key)/值(value)映射 Map接口概述 Map与Collection并列存在。用于保存具有映射关系的数据:key-value Map 中的key 和value 都可以是任何引用类型的数据Map 中的key 用Set来存放&#xff0…

X进制减法(蓝桥杯)

文章目录 X进制减法题目描述解题思路贪心算法模拟减法(大数相减) X进制减法 题目描述 进制规定了数字在数位上逢几进一。 X 进制是一种很神奇的进制,因为其每一数位的进制并不固定!例如说某种 X 进制数,最低数位为二…

创建Qt Quick Projects

在创建Qt Quick项目之前,我们简单说一下Qml和Qt Quick的关系:它们的关系类似于C和STL标准库的关系,Qml类比C语言,提供了基本语言特性和类型;而Qt Quick则类比STL标准库,Qt Quick在QML的基础上加入了一系列界…

Https【Linux网络编程】

目录 一、为什么需要https 二、常见加密方法 1、对称加密 2、非对称加密 3、数据指纹 三、选择什么加密方案? 方案一:对称加密() 方案二:双方使用非对称加密(效率低) 方案三&#xff1a…

深度学习十大算法之Diffusion扩散模型

1. 引言 扩散模型在近年来成为了热门话题,其火速蹿红主要归功于在图像生成领域的突破应用。尤其是一些从文本到图像的生成技术,它们成功地运用了扩散模型来创建令人惊叹的逼真图像。如果你听说过某个应用能够迅速且高质量地生成图像,那么很可…