我花了相当长的时间研究我遇到的问题,但是 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'