我有以下简单的代码:
它适用于简单的场景,例如:
然而,它对以下内容无效:
#!/usr/bin/env bash
while getopts :f arg; do
case $arg in
f) echo Option $arg specified. ;;
*) echo Unknown option: $OPTARG. ;;
esac
done
它适用于简单的场景,例如:
和它一起工作。
$ ./test.sh -f
Option f specified.
$ ./test.sh -a -f
Unknown option: a.
Option f specified.
然而,它对以下内容无效:
$ ./test.sh foo -f
$ ./test.sh -a abc -f
Unknown option: a.
如何修复上面的代码示例以支持无效参数?
-f
已被指定为未知参数,因此-a abc -f
仍将识别-f
,但似乎getopts
一旦发现无效参数就会停止处理。 - kenorbabc
)处。例如,-a -a -a -a -f
将四次打印未知。 - Etan Reisnergetopts
(但我不想让它比现在更复杂)。因此,第一次调用处理所有已知选项,后续调用仅检查特定参数,但它们失败了,因为它们无法识别之前的参数(而我在后续调用中并不关心)。 - kenorbcase
语句中,你不需要实际上处理任何其他选项,你可以完全忽略它们,只处理你关心的那些。 - Etan Reisner