getopt命令可以接受一系列任意形式的命令行选项和参数,并自动将它们转换成适当的格式。

getopt三种使用方式
# 第一种:无法处理带有空格的参数getopt optstring parameters# 第二种:可以处理带有空格的参数,但是需要结合eval使用getopt [options] [--] optstring parameters# 第三种:结合eval既可以处理带有空格的参数,也可以定义长选项(一个字母为短选项,一个字母以上是长选项)getopt [options] -o|--options optstring [options] [--] parameters
options:getopt自带的参数定义optstring:自定义选项参数parameters:参数理解:
通过optstring自定义选项参数字符串格式化传入的parameters(参数),进行输出
双破折线在optstring前和optstring后的区别
选项后一个冒号(:)、两个冒号、没冒号的区别
多个自定义选项参数之间的分隔
长短选项执行时注意事项
长选项
使用 -o 或 -l 时,双破折线不能用在optstring前面,需要写在optstring之后(如第三种写法)
getopt命令报错时会继续执行后面的代码,实际使用时需要使用 $? 判断命令执行结果进行处理( 将getopt与eval、set分离处理)
TPS:还有更多细节, 可以实际在Linux命令行进行测验。如使用第三种写法(结合eval、set使用)则基本不会存在问题
Example:
#!/bin/bash#eval set -- $(getopt -- a:b:s:u "$@")cmd_getopt=$(getopt -n $0 -o m::f:: -l mark::,file:: -- "$@")[ $? -ne 0 ] && exit 1eval set -- "$cmd_getopt"while [ "$1" ];do case $1 in -m|--mark) mark="$2" shift 2;; -f|--file) file="$2" shift 2;; --) shift break;; *) echo "Usage [-m|-f] operate" exit 1;; esacdone# 查看结果,可根据实际场景调用case中定义的变量echo mark -- $markecho file -- $file
以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。
您可能感兴趣的文章:WPBakery Page Builder v8.7.4 汉化包 WordPress 可视化编辑器
WordPress 7.0.1 正式发布:修复 42 个问题 建议尽快升级
《Apex英雄》独自冲分攻略详解(一人独挑大梁,攀登最高荣誉)
Vue2 portal-target 组件和 Vue3 的针对性优化
12306网上订票官网登录入口-12306网上订票官网app下载与注册
AI 时代 Harness 工程于后台管理系统中的实践