Linux bash,获取getopt默认参数

时间:2015-10-15 14:09:03

标签: linux bash shell getopt

我试图编写一个中等难度的bash程序,但不知何故我无法解析命令行参数并使用getopt设置默认参数。

Getopt以某种方式忽略可选参数,在 - 之后设置它们,这表示参数结束。

简单测试,需要l(list):

getopt -s bash -o l: -l list: -- -l test

产地:

-l 'test' --

如果我将l(list)定义为可选,则输出为:

getopt -s bash -o l :: -l list :: - -l test

-l '' -- 'test'

我使用this example作为基础,但是在我的测试中,即使这个脚本也没有按预期工作(将arga值设置为某些东西总是产生默认值)。

操作系统:Linux,getopt -V =来自util-linux 2.27的getopt

任何帮助表示赞赏:)

1 个答案:

答案 0 :(得分:4)

查看手册页:

  

一个简单的短选项是' - '后跟一个短选项字符。如果选项有必需          参数,它可以直接写在选项字符之后或作为下一个参数(即在命令行上用空格分隔)。 如果该选项具有可选参数,则必须在选项字符(如果存在)后直接写入

所以你想要

$ getopt -s bash -o l:: -l list:: -- -ltest
 -l 'test' --

同样,对于可选的long args,您必须以特定方式提供参数:

需要

$ getopt -s bash -o l: -l list: -- --list foo
 --list 'foo' --
$ getopt -s bash -o l: -l list: -- --list=foo
 --list 'foo' --

可选

$ getopt -s bash -o l:: -l list:: -- --list foo
 --list '' -- 'foo'
$ getopt -s bash -o l:: -l list:: -- --list=foo
 --list 'foo' --