Linux下杂乱无章的Bash脚本传入参数--如何解析?
无论是外置的getopt命令,亦或是bash内置的getopts函数,都对bash脚本的传入参数做了一些规定,比如强制规定了短参数"-t 1",长参数“--test 1”。但是现实环境的脚本参数是杂乱无章的,不光是长短参数结合的, 还有类似这样的参数"-test 1", 注意了是长参数的基础上少一个减号“-”。如此混乱的传入参数,如何解析,是一个令人头大的难题。
针对不规范的参数"-test 1", 使用getopt命令的“-a”参数。
注释:“-a, --alternative Allow long options starting with single -”
wll@linux:~/wll/temp$ getopt -hUsage:getopt optstring parametersgetopt [options] [--] optstring parametersgetopt [options] -o|--options optstring [options] [--] parametersOptions:-a, --alternative Allow long options starting with single --h, --help This small usage guide-l, --longoptions <longopts> Long options to be recognized-n, --name <progname> The name under which errors are reported-o, --options <optstring> Short options to be recognized-q, --quiet Disable error reporting by getopt(3)-Q, --quiet-output No normal output-s, --shell <shell> Set shell quoting conventions-T, --test Test for getopt(1) version-u, --unquoted Do not quote the output-V, --version Output version information
以下以解析2个参数“-upgrade” 和“-upath”为例。
#!/bin/bashupgrade_lable=0
update_path=/tmp/up_path# parse cmd line args: -upgrade and -upath
ARGS=`getopt -a -q -o "" -l "upgrade:,upath:" -- $@`
if [ $? != 0 ]; thenecho "getopt parsed all input args, but failed to parsed a part of..."
fiecho ARGS=[$ARGS]
# set formated args to ($1, $2, ...)
eval set -- "${ARGS}"
echo formatted parameters=[$@]while true
docase "$1" in--upgrade)echo "Option upgrade argument $2";upgrade_lable=$2shift 2;;--upath)echo "Option upath argument $2";update_path="$2"shift 2;;--)shiftbreak;;*)echo "Internal error!, argument $1";shift;;esac
doneecho "update_path=${update_path}"
echo "upgrade_lable=${upgrade_lable}"
希望对大家的脚本参数解析有所帮助。
Linux下杂乱无章的Bash脚本传入参数--如何解析?相关推荐
- Linux:如何给Shell脚本传入参数
大家都知道普通的bash命令后边可以跟任意的参数,那我们自己编写的脚本是否也支持传递参数呢?答案当然是肯定的 执行"vim test.sh"创建一个新的shell脚本.脚本test ...
- 手把手教学Linux下oracle11g自动化安装脚本编写
手把手教学Linux下oracle11g自动化安装脚本编写 产品:Oracle 版本:11.2.0.4 环境:Centos7 文章目录 手把手教学Linux下oracle11g自动化安装脚本编写 0. ...
- bash shell sleep_如何使用Linux Sleep命令暂停Bash脚本
原标题:如何使用Linux Sleep命令暂停Bash脚本 Sleep是一个命令行实用程序,允许您将调用进程挂起一段指定的时间.也就是说,sleep命令在给定的时间内暂停下一个命令的执行. 当在bas ...
- linux启动sh文件命令,Linux下如何写 .sh 脚本启动 项目
Linux下如何写 .sh 脚本启动 项目 创建文件 mealcoupon.sh 内容如下: #!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME=xhqy_ ...
- linux启停was命令,linux下的启停脚本
linux下的根据项目名称,进行进程的启停脚本 #!/bin/bash JAVA=/usr/bin/java APP_HOME=/opt/program/qa/wechat APP_NAME=prog ...
- Linux下如何执行Shell脚本
Linux下如何执行Shell脚本 Linux下你可以有两种方式执行Shell脚本: 1.用shell程序执行脚本:根据你的shell脚本的类型,选择shell程序,常用的有sh,bash,tcsh等 ...
- Linux下Apache自动监测重启脚本
Linux下Apache自动监测重启脚本(智能化程度较高) 本站原创 [基于 署名-非商业使用-相同方式分享 2.5 协议,转载须注明链接] 本文所述apache监控脚本已经过VPS管理百科验证 由于 ...
- 解决Linux下无法利用shell脚本启动conda虚拟环境问题
解决Linux下无法利用shell脚本启动conda虚拟环境问题 问题 直接在脚本中激活conda环境时遇到了一个问题 解决 查看.bashrc文件 .bashrc文件在 /home/用户名 里面,因 ...
- Linux下的lds链接脚本详解
一. 概论 每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分 ...
最新文章
- auto.exe,kavo.exe 批處理文件
- SQL Server CheckPoint的几个误区
- Python3.7.1学习(五) 将列表中的元素转化为数字并排序
- windowsphone开发_十大混生开发框架
- 双显示器设置:如何设置一台电脑两个显示器
- C# 整理DotNetBar中SuperGridControl的一些基础属性
- Java怎么避免重复订单_javaEE高并发之如何产生唯一不重复订单号
- 奔驰又召回了!“方便进出”功能翻车
- vue.config.js代理配置失效 如何解决
- LINUX下载编译lame
- 基于Montgomery算法的高速、可配置 RSA密码IP核硬件设计系列(三)——抵抗侧信道攻击设计方案
- matlab实现一维数组求平均函数
- 【转载】通过搜狗站长平台提交网站域名变更后的文章地址
- Openerp部分学习资料
- vue调用摄像头pc+移动端
- 每日总结(2021/12/15)
- 已知一个字典包含若干员工信息,姓请编写一个函数,删除性别为男的员工信息
- 关于学校订单班的那些事
- PCB设计---焊接工艺
- Vue-创建组件时报错:Component names should conform to valid custom element name in html5 specification.
热门文章
- yyyyyyyyyyyyyy
- Selenium+Firefox在Ubuntu22.04上不工作
- 研读Rust圣经解析——Rust learn-15(unsafe Rust )
- 志汇同城-同城小程序8.6开源版源码赠送米花同城6.6.6+微同城模板
- 在vSphere群集中配置EVC的注意事项
- QUV灯管-UVA340,UVB313,UVC灯管Q-SUN氙弧灯灯管和滤光器介绍
- 计算机辅助外科手术系统,计算机辅助外科手术.pdf
- 过渡和动画的基本知识
- Xenserver上连接NFS服务器时RPC:portmapperfailure;PRC:Unable to recieve
- shiro学习--day1