📜  Linux 中的 getopts 命令示例

📅  最后修改于: 2022-05-13 01:57:34.028000             🧑  作者: Mango

Linux 中的 getopts 命令示例

getopts是一个非常方便的 bash 脚本实用程序,它可以帮助您以干净、标准化的方式方便、优雅地处理标志(简短版本)和参数的传递。与让开发人员手动处理传递给脚本的标志不同,这提供了一种在迭代 while 循环时处理此问题的简便方法。

先决条件:建议对以下主题有基本的了解:

  • bash脚本的基本理解。
  • bash 中的标志。
  • bash 中的参数。

句法:

getopts optstring name [arg]

通过终端获取语法:

getopts

getopts 语法



使用 getopts 命令

1.打印帮助部分:输入以下命令打印getopts命令的帮助部分。

getopts --help

上面的命令将打印命令的详细信息以及可用于运行命令的一些参数和选项。

getopts 帮助

2. 在脚本中的使用: getopts 也可以在 Linux 的脚本中使用。以下脚本描述了相同的情况。

#!/bin/bash
while getopts ":a:bc:" flag;do
    echo "flag -$flag, Argument $OPTARG";
done

该脚本运行一个 while 循环,它遍历与给定 optstring 匹配的参数,在本例中为“a:bc:”,并将标志的值存储在变量flag 中。如果标志有任何关联的参数,则将其存储在变量OPTARG 中

optstring 的工作方式如下:

  1. 对于每个选项字母,getopts 将选项存储在变量标志中(在 optstring 之后声明),并迭代循环。
  2. 每个选项字母后跟一个冒号都需要一个参数,该参数存储在变量OPTARG 中
  3. 如果 getopts 期待一个参数,但无法解析一个,它会打印一个错误。如果它不期望, OPTARG将被初始化为“”(一个空字符串)。
  4. 如果 optstring 的第一个字符是“:”(冒号),则不会打印错误消息

3. 通过按预期传递参数来运行脚本。

./getoptsDemo.sh -a argA -b

getopts 将参数作为异常传递



注意: -b 的OPTARG是空的,而不是它以前的值,因为它在每次迭代时都被初始化。此外,-c 未通过,这不是问题,因为 optstring 中的每个标志都是可选的。

4. 通过跳过需要的标志参数来运行脚本:这会打印一条错误消息。标志初始化为“?”,OPTARG 为“.

./getoptsDemo.sh -a

getopts 在需要时跳过标志的参数

5. 通过添加 optstring 中不存在的标志来运行脚本:这会打印一条错误消息。同样,标志被初始化为“?”, OPTARG是“”。

./getoptsDemo.sh -d

添加 optstring 中不存在的标志

如果第一个字符是“:”,则 getopts 进入静默模式,不打印错误消息,并且在某些情况下行为会发生变化。考虑以下示例的 optstring“:a”-

6.在需要的地方跳过标志的参数:标志被初始化为“:”,并且OPTARG被设置为选项字符。

./getoptsDemo.sh -a

在需要时跳过标志的参数