浅谈Linux bash脚本----getopts获取脚本POSIX标准传参

getopts是一个在 Shell 脚本中用于解析命令行选项的内置命令。

它用于处理脚本的参数,使得脚本可以接受不同的选项和参数,并根据用户提供的输入采取相应的操作。

getopts 命令基于 POSIX 标准,并且通常与 while 循环结合使用。它的语法如下:

while getopts "<options>" opt; docase $opt in<option1>)# 处理 option1 的操作;;<option2>)# 处理 option2 的操作;;\?)# 处理无效选项的操作或错误提示echo "Invalid option: -$OPTARG";;esac
done

其中,<options>为该脚本程序接受的参数列表,每个参数用一个字母表示;getopts会随着while循环挨个遍历参数列表,opt为匹配到的参数字符,OPTARG为当前匹配到的参数值,如果有的话。

比非所有参数都有值,可以在配置<options>参数列表时用冒号:标记改参数是否有值,例如:

#!/bin/bash
# file_name: my_script.shwhile getopts "a:b:cde:fgh" opt
docase $opt ina)echo "Option -a is set with value $OPTARG";;b)echo "Option -b is set with value $OPTARG";;c)echo "Option -c is set";;d)echo "Option -d is set";;e)echo "Option -e is set with value $OPTARG";;f)echo "Option -f is set";;g)echo "Option -g is set";;h)echo "Option -h is set";;\?)echo "Invalid option: -$OPTARG";;esac
done
./my_script.sh -a apple -b36 -c -d -e ays -ghf
#>Option -a is set with value apple
#>Option -b is set with value 36
#>Option -c is set
#>Option -d is set
#>Option -e is set with value ays
#>Option -g is set
#>Option -h is set
#>Option -f is set

总结一下,getopts从第一个脚本命令行参数开始,假如是以-开头,则识别为是传参,取-后面的一个字母做为传参名,然后到getopts配置的<options>参数列表中检查该传参是否有值。

如果该传参有配置值,取该命令行参数剩余部分为参数值,如果剩余部分为空字符串,则取下一个命令行参数做为参数值(不管下一个命令行参数是否以-开头);

如果该传参没有配置值,且当前命令行参数还有其他字符,则取下一个字符做为传参,继续判断;

如果该传参没有配置值,且当前命令行参数没有其他字符,则取下一个命令行参数,继续判断;

如果遇到一个命令行参数不是以-开头,或所有命令行参数遍历结束,getopts返回False,while循环结束。

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

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

相关文章

labview 安捷伦 34970A 采集温度等

本文详细描述了怎么用安捷伦34970A采集温度&#xff0c;并列出了labview的下载链接&#xff0c;具有一定的参考价值。 1.必要条件&#xff1a; RS-232电缆一根 IO Libraries Suite 软件 BenchLink Data Logger 软件 软件可以在http://www.keysight.com.cn下载 检查RS-232…

SQLite3 数据库学习(五):Qt 数据库高级操作

参考引用 SQLite 权威指南&#xff08;第二版&#xff09;SQLite3 入门 1. Qt 数据库密码加密 MD5 加密在线工具 1.1 加密流程 加密后的密码都是不可逆的 1.2 代码实现 loginsqlite.h #ifndef LOGINSQLITE_H #define LOGINSQLITE_H#include <QWidget> #include <Q…

通过Whisper模型将YouTube播放列表中的视频转换成高质量文字稿的项目

项目简介 一个通过Whisper模型将YouTube播放列表中的视频转换成高质量文字稿的项目。 这个基于 Python 的工具旨在将 YouTube 视频和播放列表转录为文本。它集成了多种技术&#xff0c;例如用于转录的 Fast-Whisper、用于自然语言处理的 SpaCy 以及用于 GPU 加速的 CUDA&…

pytest测试框架介绍(1)

又来每天进步一点点啦~~~ 一、Pytest介绍&#xff1a; pytest 是一个非常成熟的全功能的Python测试框架&#xff1b; pytest 简单、灵活、易上手&#xff1b; 支持参数化 能够支持简单的单元测试和复杂的功能测试&#xff0c;可以做接口自动化测试&#xff08;pytestrequests&…

根据商品链接获取拼多多商品详情数据接口|拼多多商品详情价格数据接口|拼多多API接口

拼多多&#xff0c;作为中国最大的社交电商之一&#xff0c;为卖家提供了丰富的商品详情接口。这些接口可以帮助卖家快速获取商品信息&#xff0c;提高销售效率。本文将详细介绍如何使用拼多多商品详情接口&#xff0c;以及它的优势和注意事项。 一、拼多多商品详情接口概述 …

Picasso网络原生PICA Token通过XCM集成进入Moonriver生态

波卡上的首选多链开发平台Moonbeam宣布Moonriver和Picasso&#xff08;分别为Moonbeam和Composable Finance的Kusama对应平行链&#xff09;已达成XCM集成。该集成将Picasso的PICA Token引入Moonriver生态系统使用&#xff0c;并允许用户在Picasso网络上使用MOVR。两条平行链都…

大宗商品贸易集团数据治理实践,夯实数字基座 | 数字化标杆

某大型央企是首批全国供应链创新与应用示范企业&#xff0c;在“十四五”规划期内以聚焦供应链管理核心主业作为主要战略发展方向。供应链运营管理以大宗商品贸易为主&#xff0c;其交易往往具有交易量巨大、交易环节复杂、风险交易难识别、风险客商难管控等痛点。 随着集团数…

猪肉罐头加工污水处理设备生产厂家价格

猪肉罐头加工污水处理设备生产厂家价格 设备原理 废水由收集管网收集&#xff0c;自流进入格栅渠&#xff0c;通过格栅除污机去除大块碎肉、漂浮物&#xff0c;入初沉池把有利于沉淀的非溶解物质加以沉淀&#xff0c;然后自流进入调节池&#xff0c;由调节池调节水量和均化水质…

五分钟搭建开源ERP:Odoo,并实现公网远程访问

文章目录 前言1. 下载安装Odoo&#xff1a;2. 实现公网访问Odoo本地系统&#xff1a;3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件&#xff0c;是一个一站式全功能ERP及电商平台。 开源性质&#xff1a;Odoo是一个开源的ERP软件&#xff0c;这意味着企…

小猪优版的前世今生:从籍籍无名到行业瞩目,再到骤变的风暴中心

1. 前世&#xff1a;籍籍无名到行业新星的崛起 小猪优版在初创时期&#xff0c;并不被大众所知。然而&#xff0c;它凭借对短视频行业的深度洞察&#xff0c;以及独特的商业模式&#xff0c;开始在这个领域崭露头角。它提供了一个平台&#xff0c;不仅助力内容创作者更好地展现…

使用whisper实现语音转文本

项目地址&#xff1a;GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak Supervision 1、需要py3.8环境 conda activate p38 2、安装 pip install -U openai-whisper 3、下载项目 pip install githttps://github.com/openai/whisper.git 4、安装…

6:kotlin 空值安全(Null safety)

在Kotlin中&#xff0c;是可以有空值的。为了防止程序中出现空值问题&#xff0c;Kotlin实施了空值安全。空值安全在编译时而不是运行时检测到可能的空值问题。 空值安全是一组功能的组合&#xff0c;允许您&#xff1a; 明确声明程序中允许空值的地方。检查空值。对可能包含…

如何避免Steam搬砖项目中账号被盗

购买steam余额有风险吗&#xff1f;及N种被红锁的情况 相信最近很多人都已经听说过steam游戏搬砖这个项目&#xff0c;也叫CSGO游戏搬砖项目&#xff0c;还有人叫它&#xff1a;国外steam游戏汇率差项目&#xff0c;无论怎么称呼&#xff0c;都是同一个项目。 那么什么是stea…

2022-4-10 台大机器人学 轨迹

台大机器人学 运动学 轨迹规划 多段 linear function with parabolic blends 直线转二次曲线平滑过多个中间via points

Fuzzy c-means

Fuzzy c-means ​ 模糊C-均值聚类算法&#xff1a;是一种模糊聚类算法&#xff0c;是K均值算法聚类的推广形式&#xff0c;隶属度取值为[0,1]区间内的任意一个数&#xff0c;提出的基本依据是“类内加权误差平方和最小化”准则。 ​ 这两个方法都是迭代求取最终的聚类划分&am…

泼天的富贵来啦,快带着你的PMP证书一起迎接

考过PMP认证的威宝们&#xff0c;这波泼天的富贵大家一定要接住呀&#xff01; 很多威宝们在学习PMP之前都在担心&#xff0c;这个证书含金量高吗&#xff1f;转岗跳槽用得上吗&#xff1f;有必要考吗&#xff1f;今天&#xff0c;喜番大声地告诉大家&#xff1a;含金量高&…

Class文件转Java文件

目录 1、下载一个反编译工具2、在文件夹下打开命令窗口3、在此目录下随意建一个文件夹4、在打开的命令窗口输入命令5、返回解压目录下 1、下载一个反编译工具 下载链接&#xff1a;https://varaneckas.com/jad/ 下载的是第一个 下载后放至任意目录下解压即可 2、在文件夹下打…

夜天之书 #88 Elastic License 2.0 与开源协议的发展

译序 我在此前的多篇文章中讨论了商业开源的话题&#xff1a; 《企业开源的软件协议模型实践》《企业实践开源的动机》《商业源码协议为何得到 HashiCorp 等企业的垂青&#xff1f;》《企业如何实践开源协同》《中国不缺好的开源开发者》“商业探索与可持续”一节《开源不是商业…

JetLinks设备接入的认识与理解【woodwhales.cn】

为了更好的阅读体验&#xff0c;建议移步至笔者的博客阅读&#xff1a;JetLinks设备接入的认识与理解 1、认识 JetLinks 1.1、官网文档 官网&#xff1a;https://www.jetlinks.cn/ JetLinks 有两个产品&#xff1a;JetLinks-lot和JetLinks-view 官方文档&#xff1a; JetLi…

【自然语言处理】正向最大匹配算法(FMM),反向最大匹配算法(BMM)和双向最大匹配算法(BM)原理及实现

目录 一&#xff0c;正向最大匹配算法&#xff08;FMM&#xff09; 二&#xff0c;反向最大匹配算法&#xff08;RMM) 一&#xff0c;正向最大匹配算法&#xff08;FMM&#xff09; 正向最大匹配分词&#xff08;Forward maximum matching segmentation&#xff09;通常简称为…