首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在bash shell脚本中使用getopts来获取长和短的命令行选项

在bash shell脚本中,getopts 是一个内置命令,用于处理长短选项。它允许用户在命令行中输入参数,并在脚本内部处理这些参数。getopts 可以处理短选项(单个字符)和长选项(多个字符)。

getopts 的基本语法如下:

代码语言:bash
复制
getopts optstring name

其中,optstring 是一个包含所有可用选项的字符串,每个选项前面可以加上冒号(:)表示该选项需要参数。name 是一个变量名,用于存储当前处理的选项。

在使用 getopts 时,需要遵循以下步骤:

  1. 在脚本开头,使用 while 循环和 getopts 命令处理选项。
  2. 在循环内部,使用 case 语句处理不同的选项。
  3. 使用 shift $((OPTIND-1) 命令将非选项参数移到参数列表的开头。

以下是一个简单的示例脚本,演示如何使用 getopts 处理长短选项:

代码语言:bash
复制
#!/bin/bash

while getopts ":vh-:" opt; do
  case $opt in
    -) # 长选项
      case $OPTARG in
        verbose)
          verbose=1
          ;;
        help)
          help=1
          ;;
        *)
          echo "Invalid option: --$OPTARG" >&2
          exit 1
          ;;
      esac
      ;;
    v) # 短选项
      verbose=1
      ;;
    h) # 短选项
      help=1
      ;;
    \?) # 无效选项
      echo "Invalid option: -$OPTARG" >&2
      exit 1
      ;;
    :) # 缺少参数
      echo "Option -$OPTARG requires an argument" >&2
      exit 1
      ;;
  esac
done

shift $((OPTIND-1))

# 处理非选项参数
non_option_args=("$@")

if [ -n "$help" ]; then
  echo "Usage: $0 [-v] [--verbose] [--help]"
  exit 0
fi

if [ -n "$verbose" ]; then
  echo "Verbose mode enabled"
fi

echo "Non-option arguments: ${non_option_args[@]}"

在这个示例中,我们使用 getopts 处理了长选项 --verbose--help,以及短选项 -v-h。如果用户提供了无效的选项或缺少参数,脚本将输出错误信息并退出。最后,我们将非选项参数存储在数组 non_option_args 中,并在脚本末尾输出它们。

推荐的腾讯云相关产品和产品介绍链接地址:

相关搜索:如何使用getopts在命令行中传递shell脚本的强制和可选标志?使用mysqldump与where选项和bash脚本中的长参数列表Bash:在可以从命令行访问的bash脚本中创建shell变量如何使用"read -p“选项在shell脚本的新行中显示不同的选项将Bash与来自stdin的脚本文本和来自命令行的选项一起使用如何在Linux bash shell脚本中使用curl命令中的变量来发送带有文件的post请求?使用Bash获取在子subshell中启动的Python脚本的退出代码Bash和Conda:使用可执行的bash脚本在conda环境中安装非conda包在bash脚本中,如何从使用eval命令执行的程序中获取PID?如何使用python获取在shell中执行的命令和参数使用groovy脚本在活动选项参数中获取视图中的所有作业在bash脚本中,如何使用cli参数作为mysql查询和捕获结果的变量?FND_GLOBAL.CONC_REQUEST_ID是否可以在shell脚本中使用它来获取并发程序的request_id如何使用shell脚本和像sed这样的内置linux工具在json文本中查找键值对?如何使用bash shell脚本删除文件夹中除第一个和最后一个文件外的文件在bash脚本中获取单个进程在我终止之前的平均CPU使用率百分比如何在本地克隆的存储库上使用git在bash / shell中列出拉取请求的标题、状态和日期如何使用Xamarin Forms Shell在iOS中的选项卡行和图标之间添加一个空格?在Reinforced.Typings中是否有一个配置选项来TsIgnore所有属性和方法,除非它们具有使用设置的TsProperty属性?在图书馆的Common Lisp生态系统中,如何使用Clss和/或Plump而不是Parenscript来获取DOM的活动元素?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

参数解析工具 getopts 与 getopt 的对比

内置支持 •getopts 是大多数 shell(如 bash)内置的命令,不需要额外安装。它适用于简单的选项解析,可以处理带有参数的单个字符选项,识别短横线- 开头的选项。...它支持短选项和长选项,并且可以重组命令行参数以将所有选项放在非选项参数之前。 2....复杂性与灵活性 •getopts 比较简单,适合于脚本内部使用,当你的程序只需要处理有限数量的单字符选项时,这是一个很好的选择。它的语法相对直接,易于理解和使用。...错误处理 •getopts 在遇到未知选项或缺少选项参数时会自动输出错误信息到标准错误流,并返回一个错误状态,这使得在脚本中处理这些情况变得容易。•getopt 的错误处理机制依赖于你如何调用它。...脚本测试输出如下: 使用getopt 的例子参考前文 如何在Bash中解析命令行参数? 末尾的脚本 myscript。

13710

Shell中使用getopt、getopts命令

,并给予提供的optstring进行解析,它会自动讲-cd选项分成两个单独的选项,并插入双破折线来分割行中的额外参数。...在脚本中使用getopt set命令的选项之一是双破折线(–),它会将命令行参数替换成shell中的各种变量 #/bin/bash ################################...的boost提供了Options库,在shell中,处理此事的是getopts和getopt.getopts和getopt功能相似但又不完全相同,其中getopt是独立的可执行文件,而getopts是由.../test.sh -a arg -bc 来加载了。 应该说绝大多数脚本使用该函数就可以了,如果需要支持长选项以及可选参数,那么就需要使用getopt..../test -a -b arg arg1 -c 你可以看到,命令行中多了个arg1参数,在经过getopt和set之后,命令行会变为: -a -b arg -c – arg1 1

5.7K20
  • bashshell 解析命令行参数工具:getoptsgetopt

    bash 脚本中,简单点的参数选项,我们可以直接用位置参数 $1 $2 这样来获取处理了,例如下面这段代码片段: optionParam=$1 baseHdfsPath=$2 echo $optionParam...,比如 rsync、wget 等动辄几十上百的参数选项,那就必须用专业的工具来处理了,在 bash/shell 中我们一般用:getopts/getopt  1、bash 内置的 getopts:...如果命令行中包含了没有在getopts列表中的选项,会有警告信息,如果在整个getopts字符串前面也加上个:,就能消除警告信息了。...使用getopt时, 在命令行输入的位置参数是什么, 在getopt中需要保持原样, 比如 -t , 在getopt的case语句中也要使用-t,  而getopts中不要前面的-。.../test -a  -b arg arg1 -c  你可以看到,命令行中多了个arg1参数,在经过getopt和set之后,命令行会变为: -a -b arg -c -- arg1 $1指向-a,

    11.1K90

    getopts(1) builtin command

    Shell 脚本中可以通过1...N形式的符号来引用传入的参数,0表示当前脚本的名称。1~N 和传入参数位置相对应,比如1表示执行脚本时传入的第一个参数,2表示传入的第二个参数,以此类推引用其他参数。...对于一些只需要很简单的命令行参数的脚本,通过使用N形式轻松的完成解析,但对于比较复杂的命令行形式的参数,就需要脚本的编写者在脚本中加入复杂的代码对命令行入参进行解析。...为了减少重复性编程和简化命令行参数处理的过程,Shell 为脚本编写者提供了一些命令行处理方法,使用这些方法可以轻松的处理各种形式的命令行参数。 常用的是 getopts 和 getopt。...在 Shell 脚本中使用时,默认解析的是执行 Shell 脚本传入的参数,所以这个部分可省略不写。 3.选项 无。 4.返回值 如果找到指定或未指定的选项,getopts 将返回 true。...6.示例 使用 getopts,编写一个 Shell 脚本,可支持识别命令行选项 -b、-o、-h。其中,-b 和 -o 选项后需要跟一个参数。 #!

    14610

    Shell脚本的参数和选项

    本文将详细介绍Shell脚本中的参数和选项,包括基本语法、使用方法和示例。一、基本语法Shell脚本支持两种类型的参数,分别是位置参数和命名参数。...位置参数是Shell脚本中的特殊变量,用于表示脚本执行时传递的参数。命名参数是通过选项来传递的参数,可以使用getopts命令来解析。...is: arg32.命名参数在Shell脚本中,命名参数通常使用选项来传递。...2.在使用位置参数时,可以使用特殊变量$#来获取传递的参数数量。3.在使用命名参数时,可以使用默认值来处理未指定的选项。4.在处理多个选项时,可以使用循环结构来读取和处理选项。...,可以使用短选项和长选项来传递参数,例如:$ .

    2.3K21

    Linux:中使用getopts处理脚本参数

    在Linux中编写Shell脚本时,处理命令行参数是一个常见且重要的任务。getopts是一个用于解析命令行选项的内置命令,它能够帮助我们简化脚本参数的处理过程。...本文将详细讲解如何在Linux脚本中使用getopts来处理脚本参数,并通过示例来展示其实际应用。 一、getopts概述 getopts是一种用于解析命令行参数的工具。...与getopt不同的是,getopts是Shell内建的命令,不需要额外安装。getopts可以处理短选项(如-a)和带参数的选项(如-b value),但不支持长选项(如--help)。...三、使用步骤 定义选项字符串: 确定脚本所需的选项。 如果选项需要参数,则在该选项字符后加上:。 调用getopts: 在while循环中调用getopts,逐个处理选项。...六、总结 通过getopts,我们可以简化Shell脚本中命令行参数的处理过程。使用getopts不仅可以使代码更清晰,还能自动处理错误情况,提高脚本的健壮性。

    65110

    getopt(1) command

    1.简介 getopt 是一个广泛使用的命令行工具,用于解析复杂的命令行选项。它提供了一种标准化的方式来处理短选项和长选项,以及选项的参数,使得编写和维护命令行工具变得更加容易。...注意,与 getopt 类似的一个命令 getopts 是 Shell 内建命令,其功能没有 getopt 强大,只支持短选项,不能解析长选项。...如果没有给出-s选项,则使用BASH约定。目前有效的参数是 sh,bash,csh 和 tcsh。 -T, --test: 测试您的 getopt(1) 是这个增强版本还是旧版本。...– 双破折号 – 是一个特殊标记,用于告诉 set 命令后面的参数是位置参数,而不是选项。这个标记也用于在命令行中分隔选项和位置参数。...set -- 设置位置参数,使得脚本可以使用标准的 1, 2, … 来访问命令行参数。 (2)带长选项的解析。 #!

    9310

    shell编程:编程就是这么简单

    Q:什么是shell编程? A:shell编程就是通过语法将bash命令或外部命令整合起来,搭配正则表达式、管道命令与数据流定向等功能,来实现我们要完成的任务。...在shell脚本中,命令行参数可以直接加在脚本后面,在脚本里使用默认变量“$n”来调用(n为非负整数),下面通过一个小例子来了解shell脚本命令行参数使用方法: echo $0 echo $1 echo...sh05.sh,运行如下所示: 假如想设置命令行选项,可以使用getopts函数,该函数可以将命令行内容转换为变量。...getopts包含两个内置变量,OPTARG和OPTIND。OPTARG就是将选项后面的参数保存在这个变量当中;OPTIND:这个表示命令行的下一个选项或参数的位置。...getopts从命令中获取这些参数,并且删去了“-”,并将其赋值在第二个参数中,如果带有自己参数,这个参数赋值在“OPTARG”中。

    83840

    《Linux命令行与shell脚本编程大全》第十四章 处理用户输入

    有时还会需要脚本能够与使用者交互。bash shell提供了一些不同的方法来从用户处获得数据, 包括命令行参数,命令行选项,以及直接从键盘读取输入的能力。...这样就可以添加任意多的参数了。 14.1.2 读取脚本名 $0 参数获取shell在命令行启动的脚本名。 也就是说 同一个脚本test。 ....分离参数和选项 如果需要在shell脚本中同时使用选项和参数。 解决方案是用特殊字符来将二者分开。 shell会用双破折线来表明选项列表结束。在双破破折现之后脚本就可以放心的将剩下的命令当做参数了。...image.png 2.在脚本中使用getopt 可以在脚本中使用getopt来格式化脚本所携带的任何命令行选项或者参数,用起来略繁琐。...使用更高级的getopts getopt将命令行上选项和参数的处理结后只生成一个输出。 getopts能够和已有的shell参数变量配合默契。 每次调用它时,它一次只处理命令行上检测到的一个参数。

    1.8K50

    统计文件夹下某类文件大小的小脚本

    /bin/bash # 统计一个目录下指定类型或限制某种类型以外的文件的大小,包括子目录 help() { echo "Description: 用于查找某个目录下特定类型文件的数量和总的大小,...,因为写这个脚本查阅了一些资料,主流的方案是使用下面两个命令: getopts 是 Linux 系统中的一个内置变量,一般通过循环的方式使用,每次循环 getopts 都会检查命令行选项,并将命令行选项的值爆存在...OPTARG 变量中 getopt 是一个外部命令,相较于 getopts 命令能够支持长参数,但是使用起来较 getopts 复杂 本文中因为参数比较少且没计划使用长参数,因此采用了 getopts...来处理选项和参数问题。...给你的shell脚本写一个--help文档 编写可接受选项和参数的shell脚本 getopts 的使用

    1.3K20

    Bash概论 - Linux系列教程补充篇

    ; do j=${i/_1.fq.gz/}; echo "$j"; done Shell中条件和test命令 Bash可以使用[ … ]结构或test命令测试复杂条件格式: [ expression ]...() { function body}定义函数,函数参数的获取同命令行参数获取。...命令行处理命令 getopts 有两个参数, 第一个为字母和冒号组成的选项列表字符串, 第二个为一个变量名 选项列表字符串以冒号开头的选项字母排列组成, 如果一选项需要一个参数则该选项字母后跟一个冒号...getopts分解第一参数, 依次将选项摘取出来赋给第二个参数变量 如果某选项有参数, 则读取参数到内置变量OPTARG中 内置变量OPTIND保存着将被处理的命令行参数(位置参数)的数值选项列表处理完毕...getopts返回1, 否则返回0 如: 在我们推出的一步绘图脚本里面,就是使用Bash封装的R脚本,通过修改命令行参数,完成热图、柱状图、线图、Venn图、火山图、泡泡图等图形的绘制和定制。

    1.2K70

    Shell脚本中的while getopts用法小结

    示例说明: 1)在shell脚本中,对于简单的参数,常常会使用$1,$2,......这个时候我们就可以使用bash内置的getopts工具了,用于解析shell脚本中的参数!...操作中,有两个"常量",一个是OPTARG,用来获取当前选项的值;另外一个就是OPTIND,表示当前选项在参数列表中的位移。case的最后一项是?...,用来识别非法的选项,进行相应的操作,我们的脚本中输出了帮助信息。 3)getopts示例二:当选项参数识别完成以后,就能识别剩余的参数了,我们可以使用shift进行位移,抹去选项参数。...shift参数的使用 很多脚本执行的时候我们并不知道后面参数的个数,但可以使用$*来获取所有参数。但在程序处理的过程中有时需要逐个的将$1、$2、$3……$n进行处理。

    9.1K74

    Linux Shell编程零基础入门

    在本文中,我们关注的重点是Bash,也就是Bourne Again Shell,由于易用和免费,Bash在日常工作中被广泛使用;同时,Bash也是大多数Linux系统默认的Shell。...在方括号的两侧都有空格,在-f、-lt、=等符号两侧同样也有空格。如果没有这些空格,Shell解释脚本的时候就会出错。 $#表示包括$0在内的命令行参数的个数。...在Shell脚本中可以使用所有的Linux命令,利用上面的cat和exit,从一方面来说,熟练使用Linux命令也可以大大减少Shell脚本的长度。...exit 1;; esac done 上面的getopts类似于C语言提供的函数getopts,在Shell Script中,getopts经常和while语句联合起来使用。...getopts的语法如下: getopts option_string variable option_string中包含一串单字符选项,若getopts在命令行参数中 发现了连字符,那么它会将连字符之后的字符与

    1.2K10

    是不是傻傻分不清楚Unix 和 Linux?看了这个就知道了

    在本文中,我将列出一些比较明显的差异。 1. Bash不是标准的shell 所有Unix系统上的默认shell都是sh,而不是bash。POSIX标准中介绍了sh中使用的语言。...然而,在许多Linux系统上,sh只是指向bash的链接,这样可以用更接近标准的方式来使用bash,但人们依然可以使用一些无法在其他系统上使用的bash功能。如有疑问,请参阅标准。 2....Unix不包含长选项 Unix命令的选项有两种写法:短选项(只有一条短线-)与长选项(有两条短线--)。短选项一般会采用缩写的形式,而长选项一般会写出完整的单词。...许多工具程序都接受长选项,例如grep --count,对应的短选项是grep -c。前者是GNU的写法,其他系统通常不会采用这种写法,例如BSD。...事实上,标准的getopts工具程序和相应的getopt C函数只支持短选项。 3. Make不同于GNU make POSIX版本的make比GNU版本更有局限性。

    52060

    Linux Shell编程入门

    在方括号的两侧都有空格,在-f、-lt、=等符号两侧同样也有空格。如果没有这些空格,Shell解释脚本的时候就会出错。 $#表示包括$0在内的命令行参数的个数。...在Shell脚本中可以使用所有的Linux命令,利用上面的cat和exit,从一方面来说,熟练使用Linux命令也可以大大减少Shell脚本的长度。...exit 1;; esac done 上面的getopts类似于C语言提供的函数getopts,在Shell Script中,getopts经常和while语句联合起来使用。...getopts的语法如下: getopts option_string variable option_string中包含一串单字符选项,若getopts在命令行参数中 发现了连字符,那么它会将连字符之后的字符与...第四,我们也可以在Shell下调试Shell Script脚本,当然最简单的方法就是用echo输出查看变量取值了。Bash也提供了真正的调试方法,就是执行脚本的时候用-x参数。 sh ?

    1.2K10

    Linux Shell编程入门

    在本文中,我们关注的重点是Bash,也就是Bourne Again Shell,由于易用和免费,Bash在日常工作中被广泛使用;同时,Bash也是大多数Linux系统默认的Shell。...在方括号的两侧都有空格,在-f、-lt、=等符号两侧同样也有空格。如果没有这些空格,Shell解释脚本的时候就会出错。 $#表示包括$0在内的命令行参数的个数。...在Shell脚本中可以使用所有的Linux命令,利用上面的cat和exit,从一方面来说,熟练使用Linux命令也可以大大减少Shell脚本的长度。...exit 1;; esac done 上面的getopts类似于C语言提供的函数getopts,在Shell Script中,getopts经常和while语句联合起来使用。...getopts的语法如下: getopts option_string variable option_string中包含一串单字符选项,若getopts在命令行参数中 发现了连字符,那么它会将连字符之后的字符与

    1.4K20

    Linux Shell编程入门

    在本文中,我们关注的重点是Bash,也就是Bourne Again Shell,由于易用和免费,Bash在日常工作中被广泛使用;同时,Bash也是大多数Linux系统默认的Shell。...在方括号的两侧都有空格,在-f、-lt、=等符号两侧同样也有空格。如果没有这些空格,Shell解释脚本的时候就会出错。 $#表示包括$0在内的命令行参数的个数。...在Shell脚本中可以使用所有的Linux命令,利用上面的cat和exit,从一方面来说,熟练使用Linux命令也可以大大减少Shell脚本的长度。...exit 1;; esac done 上面的getopts类似于C语言提供的函数getopts,在Shell Script中,getopts经常和while语句联合起来使用。...getopts的语法如下: getopts option_string variable option_string中包含一串单字符选项,若getopts在命令行参数中 发现了连字符,那么它会将连字符之后的字符与

    3.8K20

    Linux学习笔记(四)

    )的特性来存储有关shell会话和工作环境的信息。...交互式shell不会像登录shell一样运行,但它依然提供了命令行提示符来输入命令。 通俗来说,就是在终端,shell等待用户输入,然后执行用户输入的命令。...) OPTARG getopts命令处理的最后一个选项参数值 OPTIND getopts命令处理的最后一个选项参数的索引号 PATH shell查找命令的目录列表,由冒号分隔 PS1 shell命令行界面的主提示符...使用bash -c选项传递过来的命令 BASH_LINENO 含有当前执行的shell函数的源代码行号的数组变量 BASH_REMATCH 只读数组,在使用正则表达式的比较运算符=~进行肯定匹配(positive...被删除的目录名会用一组英文句点替换 PS3 select命令的提示符 PS4 如果使用了bash的一x选项,在命令行之前显示的提示信息 PWD 当前工作目录 RANDOM 返回一个0~ 32767的随机数

    1.1K10

    BashShell变量

    简介 Bash Shell 使用「环境变量」来存储有关 Shell 会话和工作环境的信息。...var} 3.5 删除环境变量 在 Bash Shell 使用 unset 命令来删除环境变量。 unset var 和修改全局变量类似,在子进程中删除全局变量也无法反映到父进程中。...会检查列表中的每个文件,看看有没有新邮件) OPTARG getopts 命令处理的最后一个选项参数值 OPTIND getopts 命令处理的最后一个选项参数的索引号 PATH Shell 查找命令的目录列表...被删除的目录名会用一组英文句点替换 PS3 select 命令的提示符 PS4 如果使用了 bash 的 -x 选项,在命令行之前显示的提示信息 PWD 当前工作目录 RANDOM 返回一个 0~32767...Bash Shell 的选项标志是在启动时或以内建命令 set 指定的,或者是 shell 自身设置的(例如选项 -i)。

    2.4K30
    领券