无论是外置的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脚本传入参数--如何解析?相关推荐

  1. Linux:如何给Shell脚本传入参数

    大家都知道普通的bash命令后边可以跟任意的参数,那我们自己编写的脚本是否也支持传递参数呢?答案当然是肯定的 执行"vim test.sh"创建一个新的shell脚本.脚本test ...

  2. 手把手教学Linux下oracle11g自动化安装脚本编写

    手把手教学Linux下oracle11g自动化安装脚本编写 产品:Oracle 版本:11.2.0.4 环境:Centos7 文章目录 手把手教学Linux下oracle11g自动化安装脚本编写 0. ...

  3. bash shell sleep_如何使用Linux Sleep命令暂停Bash脚本

    原标题:如何使用Linux Sleep命令暂停Bash脚本 Sleep是一个命令行实用程序,允许您将调用进程挂起一段指定的时间.也就是说,sleep命令在给定的时间内暂停下一个命令的执行. 当在bas ...

  4. linux启动sh文件命令,Linux下如何写 .sh 脚本启动 项目

    Linux下如何写 .sh 脚本启动 项目 创建文件   mealcoupon.sh 内容如下: #!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME=xhqy_ ...

  5. linux启停was命令,linux下的启停脚本

    linux下的根据项目名称,进行进程的启停脚本 #!/bin/bash JAVA=/usr/bin/java APP_HOME=/opt/program/qa/wechat APP_NAME=prog ...

  6. Linux下如何执行Shell脚本

    Linux下如何执行Shell脚本 Linux下你可以有两种方式执行Shell脚本: 1.用shell程序执行脚本:根据你的shell脚本的类型,选择shell程序,常用的有sh,bash,tcsh等 ...

  7. Linux下Apache自动监测重启脚本

    Linux下Apache自动监测重启脚本(智能化程度较高) 本站原创 [基于 署名-非商业使用-相同方式分享 2.5 协议,转载须注明链接] 本文所述apache监控脚本已经过VPS管理百科验证 由于 ...

  8. 解决Linux下无法利用shell脚本启动conda虚拟环境问题

    解决Linux下无法利用shell脚本启动conda虚拟环境问题 问题 直接在脚本中激活conda环境时遇到了一个问题 解决 查看.bashrc文件 .bashrc文件在 /home/用户名 里面,因 ...

  9. Linux下的lds链接脚本详解

    一. 概论 每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分 ...

最新文章

  1. auto.exe,kavo.exe 批處理文件
  2. SQL Server CheckPoint的几个误区
  3. Python3.7.1学习(五) 将列表中的元素转化为数字并排序
  4. windowsphone开发_十大混生开发框架
  5. 双显示器设置:如何设置一台电脑两个显示器
  6. C# 整理DotNetBar中SuperGridControl的一些基础属性
  7. Java怎么避免重复订单_javaEE高并发之如何产生唯一不重复订单号
  8. 奔驰又召回了!“方便进出”功能翻车
  9. vue.config.js代理配置失效 如何解决
  10. LINUX下载编译lame
  11. 基于Montgomery算法的高速、可配置 RSA密码IP核硬件设计系列(三)——抵抗侧信道攻击设计方案
  12. matlab实现一维数组求平均函数
  13. 【转载】通过搜狗站长平台提交网站域名变更后的文章地址
  14. Openerp部分学习资料
  15. vue调用摄像头pc+移动端
  16. 每日总结(2021/12/15)
  17. 已知一个字典包含若干员工信息,姓请编写一个函数,删除性别为男的员工信息
  18. 关于学校订单班的那些事
  19. PCB设计---焊接工艺
  20. Vue-创建组件时报错:Component names should conform to valid custom element name in html5 specification.

热门文章

  1. yyyyyyyyyyyyyy
  2. Selenium+Firefox在Ubuntu22.04上不工作
  3. 研读Rust圣经解析——Rust learn-15(unsafe Rust )
  4. 志汇同城-同城小程序8.6开源版源码赠送米花同城6.6.6+微同城模板
  5. 在vSphere群集中配置EVC的注意事项
  6. QUV灯管-UVA340,UVB313,UVC灯管Q-SUN氙弧灯灯管和滤光器介绍
  7. 计算机辅助外科手术系统,计算机辅助外科手术.pdf
  8. 过渡和动画的基本知识
  9. Xenserver上连接NFS服务器时RPC:portmapperfailure;PRC:Unable to recieve
  10. shiro学习--day1