0

我想在 Bash 变量中指定参数(选项和参数)并将该变量传递getopts给解析而不是通常的变量${1}${2}。我不知道该怎么做。通常在 的文档中getoptsgetopts语法描述如下:

Syntax
    getopts optstring name [args]

我知道它optstring表示getopts有关如何解析参数的说明,并且name是一个变量,用于存储正在考虑的当前信息getopts(例如选项参数的值),但我不知道[args]它的意图是什么。这是一种在getopts不使用标准命令行变量的情况下传递参数的方法吗?如果是,我怎么能使用这个设施?如果不是,那么将存储在空格分隔的 Bash 变量中的参数传递给 的好方法是什么getopts?谢谢!

4

1 回答 1

3

是的,可选args参数是传递自定义参数的一种方式。正如手册中所说:

getopts 通常解析位置参数,但如果在 args 中给出更多参数,getopts 会改为解析这些参数。

所以如果你有一个数组:

myargs=(arg1 arg2 arg3)

您可以使用:

getopts optstring name "${myargs[@]}"

来处理它们。

例子:

$ # Set positional parameters:
$ set -- -a 1 -b
$ getopts a:b var -a 2
$ echo $var
a
$ echo $OPTARG
2

如您所见,它从我提供给命令 ( 2) 的参数中检索值,而不是外壳 ( 1)的位置参数

于 2014-01-12T05:44:10.367 回答