shell之getopts

getopts 是一个常用于解析命令行选项的bash内建命令。它的基本语法是:

	
getopts optstring name [arg...]
  • optstring列出了对应的Shell Script可以识别的所有参数。比如:
    • 如果 Shell Script可以识别-a,-f以及-s参数,则optstring就是afs;
    • 如果对应的参数后面还跟随一个值,则在相应的optstring后面加冒号。比如,a:fs 表示a参数后面会有一个值出现,-a value的形式。另外,getopts执行匹配到a的时候,会把value存放在一个叫OPTARG的Shell Variable当中。
      -如果 optstring是以冒号开头的,命令行当中出现了optstring当中没有的参数将不会提示错误信息。
  • name表示的是参数的名称,每次执行getopts,会从命令行当中获取下一个参数,然后存放到name当中。如果获取到的参数不在optstring当中列出,则name的值被设置为?。命令行当中的所有参数都有一个index,第一个参数从1开始,依次类推。 另外有一个名为OPTIND的Shell Variable存放下一个要处理的参数的index。
#!/bin/bashwhile getopts "drp:f" OPTION
docase "$OPTION" ind)echo "Option d is selected.";;r)echo "Option r is selected.";;p)echo "Option p is selected with value $OPTARG.";;f)echo "Option f is selected.";;\?)echo "Invalid option: -$OPTARG"exit 1;;esac
done

在这个脚本中, O P T I N D 变量用于保存下一个要处理的参数的索引。 OPTIND 变量用于保存下一个要处理的参数的索引。 OPTIND变量用于保存下一个要处理的参数的索引。OPTARG 用于保存选项参数的值。
注意,如果你的选项字符串中的字符后面有冒号(:),那么对应的选项参数将会被放入变量 OPTARG 中。在处理这样的选项时,你应该立即使用 O P T A R G 中的值,因为在处理下一个选项时, OPTARG 中的值,因为在处理下一个选项时, OPTARG中的值,因为在处理下一个选项时,OPTARG 的值可能会被覆盖。
在上面的脚本中,d、r 和 f 是简单选项,不需要参数,而 p 需要一个参数。当选项后面紧跟了参数时,$OPTARG 变量会包含这个参数的值。
当解析到一个未定义的选项时,getopts 命令会设置返回状态为 1,并将问号字符(?)存储在 $OPTION 中。这种情况下,脚本会打印一条错误消息,并退出。
这个脚本可以处理 -d -r -p some_arg -f 这样的命令行参数,但不能处理 --option 这样的长参数形式。如果需要处理长参数形式的选项,你可能需要使用不同的方法,比如 getopt 命令或者完全自定义解析逻辑。

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

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

相关文章

【贪心 决策包容性 】757. 设置交集大小至少为2

本文涉及知识点 贪心 决策包容性 LeetCode757. 设置交集大小至少为2 给你一个二维整数数组 intervals ,其中 intervals[i] [starti, endi] 表示从 starti 到 endi 的所有整数,包括 starti 和 endi 。 包含集合 是一个名为 nums 的数组,并…

Quasar V2.16.4 新版发布,基于 Vue 3 的前端开发框架,一套代码发布到多端

Quasar 又发布新版本了,性能优秀的 Vue 组件开发框架,时隔3年再次推荐给大家。 早在2021年,我就写了一篇简单的文章向大家推荐了 Quasar 这款 Vue.js 开发框架,如今3年过去了,Quasar 发展得很好,更新频率依…

H5开发有哪些技巧?

随着现代社会的飞速发展,网页开发已经从传统的HTML、CSS、JavaScript往H5发展。H5也称为HTML5,可以理解为是HTML的升级版,具有更加优秀的性能、更加完善的功能和更加多样的体验。因其灵活性和跨平台特性,成为了各类移动应用和网页…

数学建模学习(128):使用Python结合CILOS与熵法的多准则决策权重确定

本文介绍方法为:结合CILOS与熵法的多准则决策权重,请理解为主,代码可以当作模板使用。 文章目录 1 引言2 问题背景2.1. 熵法 (Entropy Method)2.2 准则影响损失法 (CILOS Method)2.3 Python代码实现2.4 结果的决策指导意义2.4 结论参考文献1 引言 多准则决策(Multi-Criter…

面试常问! transformer中dk的大小,以及为什么设成这样,维度,原文分析。

目录: 原文 :翻译:流程:原因: 原文(多头注意力部分) : 李沐b站论文精读 论文网盘下载:链接 提取码: vm3d 翻译: 在这项工作中,我们采用了 h8 个并行注意力层&#xff…

flutter之image_picker上传图片

原文地址 image_picker 安装 image_picker: ^1.1.2使用 我们获取到上传的照片后,将其转为base64编码的格式,方便后续使用 // source: 接收两种模式,相册和拍照final pickedImage =await

No module named ‘comtypes‘

No module named comtypes 报错解释: 这个错误表明Python解释器无法找到名为comtypes的模块。comtypes是一个Python库,用于处理COM类型库,特别是用于与Windows COM组件交互。如果你的代码或者你尝试运行的程序需要使用comtypes库&#xff0…

Linux远程管理—SSH协议

SSH协议是远程连接的安全性协议,该协议可以有效防止远程管理过程中的信息泄漏,是西安传输数据加密,能够防止DNS和IP欺骗,传输数据压缩,加快传输速度。 安全验证方法有口令验证和密钥验证两种实现手段,该协…

线上剧本杀小程序,线上游戏新体验

剧本杀作为当下热门的社交型游戏方式,成为了大众社交娱乐的选择,为大众带来新的游戏体验。在数字化发展时期,线上剧本杀为大众带来了新鲜的游戏体验,它打破了时间空间限制,让玩家在手机上体验虚拟游戏,通过…

Python的可选导入 optional import

Python的可选导入:提升代码可读性与简洁性的利器 在Python编程中,我们常常会使用到各种库和模块。为了方便使用这些库和模块,我们需要通过导入语句将其引入到我们的程序中。然而,随着项目规模的增大,导入语句可能会变…

Oracle发邮件时SMTP服务器配置方法与步骤?

Oracle发邮件功能如何配置?如何优化Oracle发信性能? 为了实现自动化报告和通知,Oracle发邮件功能变得尤为重要。通过配置SMTP服务器,Oracle可以轻松地发送电子邮件。AokSend将详细介绍如何配置Oracle发邮件时的SMTP服务器&#x…

音频处理新纪元:深入探索PyTorch的torchaudio

音频处理新纪元:深入探索PyTorch的torchaudio 在深度学习领域,音频数据的处理和分析正变得越来越重要。PyTorch,作为一个强大的机器学习库,通过其torchaudio扩展包,提供了一套完整的工具来处理和分析音频数据。本文将…

IDEA 编译项目时卡在Parsing java,最终报out of memory

今天在项目运行的时候莫名其妙报错: 报错内容: java.lang.OutOfMemoryError: GC overhead limit exceeded原因: 通常是因为堆内存太小,无法有效管理正在创建和销毁的对象。 解决方法: 在 IDEA 的安装目录下找到 bi…

ABB巨资收购一家电气龙头,为当年卖给日立电气业务回血

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 战略扩张:ABB携SEAM集团深耕电气服务市场 在电气服务领域,ABB再次展现了其强大的市场扩张能力。近日,ABB宣布…

实现uniapp h5 网页跳转微信小程序

文章目录 前言一、实现uniapp网页跳转微信小程序二、具体步骤1.获取小程序的token2.获取小程序跳转链接3.总的示例模板 总结 前言 最近的项目中有用到,算是踩坑后的记录吧 微信官方文档参考:获取token 微信官方文档参考:获取url scheme 提示…

C# 实现WebScoket客户端

C# 实现WebScoket客户端 含登录授权功能 using System; using System.Text; using System.Threading; using System.Collections.Concurrent; using System.Net.WebSockets; using Newtonsoft.Json.Linq; using System.Net; using System.IO;using MultiCore.ViewModel;namesp…

【CanMV K230】外接传感器

【CanMV K230】外接传感器 外接LED灯 B站视频链接 抖音链接 我们后面主要做是机器视觉。K230能帮我们捕捉到图像信息。更多小功能需要我们自己来做。 比如舵机抬杆,测温报警等 都需要我们外接传感器。 本篇就来分享一下如何使用K230外接传感器 首先需要知道K230…

栈OJ题——有效的括号

文章目录 一、题目链接二、解题思路三、解题代码 一、题目链接 有效的括号 题目描述:给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。括号匹配。 二、…

Windows Edge浏览器对Web Authentication API的支持分析与实践应用

随着网络技术的发展,Web安全认证方式也在不断进步。Web Authentication API(通常称为WebAuthn)是一个现代的Web标准,旨在提供更安全、更便捷的认证机制。它支持多种认证方式,包括生物识别技术、硬件令牌和手机认证等。…

Pycharm module ‘serial‘ has no attribute ‘Serial‘

已经pip install serial 已经提示安装成功了,提示没有Serial的属性,经过查询 ,发现安装的模块不对,应该安装pyserial模块。 解决步骤 第一步:卸载serial pip uninstall serial 第二步:安装pyserial pip u…