`

BASH中getopts的用法

阅读更多

getopts optstring varname [arg ...]

optstring
 option字符串,会逐个匹配
varname    每次匹配成功的选项
arg        参数列表,没写时它会取命令行参数列表

$OPTIND    特殊变量,option index,会逐个递增
$OPTARG    特殊变量,option argument,不同情况下有不同的值


细则1:当optstring以”:“开头时,getopts会区分invalid option错误和miss option argument错误。
      invalid option时,varname会被设成?,$OPTARG是出问题的option;
      miss option argument时,varname会被设成:,$OPTARG是出问题的option。
      如果optstring不以”:“开头,invalid option错误和miss option argument错误都会使
      varname被设成?,$OPTARG是出问题的option。

细则2:当optstring中的字母跟”:“时,表明该option可接参数,参数(argument)放在$OPTARG中;
      如果缺参数,且optstring是以”:“开头,则varname的值会是:,$OPTARG是该option,
      否则varname的值是?,$OPTARG是该option。(参照细则1)

简单的sample:

#!/bin/bash

SKIPBLANKS=
TMPDIR=/tmp
CASE=lower

while getopts :bt:u arg
do
    case $arg in
        b)
SKIPBLANKS=TRUE
                  echo "If skip blanks? $SKIPBLANKS"
                  ;;

        t) if [ -d "$OPTARG" ]
                    then
                 
   TMPDIR=$OPTARG
                    echo "Temp dir is $TMPDIR."
                  else
                    echo "$0: $OPTARG is not a directory." >&2
                    exit 1
                  fi
                  ;;

        u)
CASE=upper
                  echo "Case sensitivity is $CASE."
                  ;;

        :) echo "$0: Must supply an argument to -$OPTARG." >&2
                  exit 1
                  ;;

        \?) echo "Invalid option -$OPTARG ignored." >&2
                  ;;
        esac
done

分享到:
评论

相关推荐

    Shell脚本中使用getopts处理多命令行选项

    下面将详细介绍`getopts`的使用方法及其在脚本中的应用。 `getopts`的基本语法是: ```bash getopts optstring varname ``` - `optstring` 是一系列可能的选项,每个选项前通常加一个破折号(-)。如果某个选项需要...

    在bash中编写tui:如何在BASH中编写TUI

    在Bash中编写TUI(Text User Interface,文本用户界面)是一种创建命令行友好界面的方法,它可以增强交互性,提供类似图形用户界面的功能,但无需依赖图形环境。Bash是Unix/Linux系统中最常用的Shell,其内置功能...

    Linux高级bash编程

    使用getopts命令来读取传递给脚本的选项/参数. 11-20. "Including"一个数据文件 11-21. 一个没什么用的,source自身的脚本 11-22. exec的效果 11-23. 一个exec自身的脚本 11-24. 在继续处理之前,等待一个进程的结束 ...

    Advanced Bash-Scripting Guide <>

    使用getopts 命令来读取传递给脚本的选项/参数. 11-20. "Including"一个数据文件 11-21. 一个没什么用的,source 自身的脚本 11-22. exec 的效果 11-23. 一个exec 自身的脚本 11-24. 在继续处理之前,等待一个进程的...

    高级Bash脚本编程指南

    这份"高级Bash脚本编程指南"旨在提供详尽的教程和实例,帮助用户快速掌握Bash脚本的高级用法。 ### 一、Bash基础 在开始高级话题之前,我们需要回顾一下Bash的基础知识。这包括变量声明、条件语句(if...else)、...

    bash shell命令行选项与修传入参数处理

    在这种方法中,Bash 自动将命令行参数分配给特殊的变量。`$0` 存储脚本名,`$1` 到 `$n` 分别存储从第一个到第 n 个参数,`$#` 保存参数总数,`$@` 和 `$*` 分别表示所有参数的数组和拼接后的字符串。例如,`for ...

    BashPragramming.pdf

    Bash脚本是Linux和Unix操作系统中广泛使用的命令行解释器,是一种高级的、可编程的Shell。它为用户和系统管理员提供了一个强大的工具,用于自动化常规任务,处理文件和目录,以及执行各种复杂的系统管理任务。 首先...

    linux-getoptsfish的命令行选项解析器

    Linux开发中的命令行工具是开发者日常工作中不可或缺的一部分,而`getopts`就是一个在Shell脚本中广泛使用的命令行选项解析器。在这个特定的案例中,我们关注的是`fish` shell中的`getopts`实现,它提供了处理命令行...

    5shell内置变量1

    标题中的“5shell内置变量1”指的是Bash shell中的一类特殊的变量,这些变量由shell自动创建和管理,用于各种目的,例如环境设置、命令执行和用户交互。描述中提到了几个具体的内置变量,如`$_`、`OPTARG`、`OPTIND`...

    linux shell命令行选项与参数用法详解

    在Shell脚本中,命令行选项和参数的使用是至关重要的,它们能够定制命令的行为。这篇文章将详细解析Linux Shell中处理命令行选项与参数的三种方法。 首先,我们可以直接处理位置参数。在Shell中,命令行参数通过...

    20120906_命令行参数解析1

    本文将详细讲解`getopt`函数在C语言中的使用,同时也会提及bash脚本、Python和Go语言中的类似方法。 在C语言中,`getopt`函数位于`unistd.h`头文件中,其基本语法如下: ```c int getopt(int argc, char *const ...

    shell获取命令行参数示例分享

    在提供的代码示例中,可以看到`getopts`的用法: ```bash #!/bin/bash while getopts a:bc opt do case $opt in a) echo "aaa" echo $OPTARG b) echo "bb" c) echo "ccc" *) echo "error" esac done ``` 这...

    Shell脚本通过参数名传递参数的实现代码

    在编写Linux Shell脚本时,通常使用$1, $2等变量来接收命令行传递的参数,这种方法简单但不直观,容易导致混淆。为了解决这个问题,我们可以利用`getopts`命令来实现通过参数名传递参数,使得脚本更加易读、易维护。...

    shell学习教程获取命令行参数示例

    掌握 `getopts` 的用法,可以使你的Shell脚本具有更好的可读性和维护性。它允许你定义复杂且灵活的命令行接口,就像许多专业命令行工具那样。通过熟练运用这一技巧,你可以创建出功能强大、易于使用的脚本来满足日常...

    shell命令shell命令(资料包)

    学习Shell编程,最好的方法是动手实践,例如编写自动备份脚本、日志分析脚本等,将理论知识应用到实际问题解决中。 通过这个资料包,你将能够深入学习和理解Linux Shell编程的核心概念,从而提升你在系统管理和...

    Linux怎么开启回收站功能.pdf

    为了防止误删,实现回收站功能的方法是使用 Bash 脚本创建 delete 脚本、logTrashDir 脚本和 restoreTrash 脚本,来模拟 Windows 的回收站功能。 Delete 脚本是核心脚本,重新封装了 rm 命令的功能。当用户执行 ...

Global site tag (gtag.js) - Google Analytics