getopt 可选参数,不使用格式 --name=value

问题描述 投票:0回答:1

我的系统上有 util-linux 2.38 的 getopt :

[davide@68YM9C3 tmp]$ getopt -V
getopt from util-linux 2.38
[davide@68YM9C3 tmp]$

我想要一个长选项的可选参数,但我想输入它的值(当我打算输入它时)而不使用格式

--option=value

选择强制参数支持的格式

--option value

示例:

[davide@68YM9C3 ~]$ getopt -a -o abc: --long option:: -- -a -b -c a -option value
-a -b -c 'a' --option '' -- 'value'

您可以在此处看到该值在

--
之后进入非选项参数 和
--option
取空值。 预期的响应应该与使用
=
时非常相似 但我宁愿不被迫使用它

[davide@68YM9C3 ~]$ getopt -a -o abc: --long option:: -- -a -b -c a -option=value
-a -b -c 'a' --option 'value' --

有谁知道是否可以使用 getopt 来完成? 我并不是特别想写一个复杂的

case
来正确区分可选参数和选项本身。

bash getopt
1个回答
0
投票
一个简单的短选项...[i]如果该选项有一个可选参数,则必须将其直接写在选项字符(如果存在)之后。
长选项...[i]如果选项有可选参数,则必须直接写在长选项名称之后

getopt(1)

这不能使用

getopt
(或其他语言中的其他类似参数处理器)来完成。采用可选值的选项的事实上的标准是,长选项需要
--option=value
,短选项需要
-ovalue
,仅此而已。

花了很长时间处理参数处理和指定它们的各种方式,我非常理解这个问题的两面:我很欣赏使用

--option value
的愿望,但我知道由此带来的困难。

有可能支持您想要的内容,但是该格式出现错误的可能性高于当前所需格式出现错误的可能性,因此如果不支持它,对所有人来说都会更安全.

最终我认为可能没有一个好方法来支持采用既安全又满足每个人愿望的可选值的选项。

FWIW,您

可能能够通过在选项名称中添加特殊字符(例如getopt

)来执行某些操作,然后以不同的方式处理这些选项,甚至在调用
--option?
之前预处理这些选项。

© www.soinside.com 2019 - 2024. All rights reserved.