使用 getopts 时 OPTARG 中出现奇怪的前导空格

使用 getopts 时 OPTARG 中出现奇怪的前导空格

我花了相当长的时间研究我遇到的问题,但是 getopts 教程都没有提到使用 getopts 时 OPTARG 中的前导空格。

在 bash(在 Ubuntu 和 OSX 上)中,执行以下命令:

OPTIND=1 && getopts ":n:" opt "-n 1" && echo "OPTARG: '$OPTARG'"

它回响:

OPTARG: ' 1'

但是,如果我执行此操作:

OPTIND=1 && getopts ":n:" opt "-n1" && echo "OPTARG: '$OPTARG'"

然后我会得到我所期望的:

OPTARG: '1'

据我在网上读到的:

通常情况下一个或多个空格将值与选项字母分隔开;但是,getopts 还处理紧跟在字母后面的值[参考]

如果上面的引用对于 getopts 来说普遍正确,那么我在 OPTARG 中得到前导空格时做错了什么?

答案1

您应该省略 周围的双引号"-n -1",因为这样可以保留 之前的空格1

OPTIND=1 && getopts ":n:" opt -n 1 && echo "OPTARG: '$OPTARG'"

给出:

OPTARG: '1'

相关内容