4

你能在同一个脚本中使用两次 bash“getopts”函数吗?

我有一组选项,它们的含义取决于特定选项的值。由于我不能保证 getopts 会首先评估该特定选项,因此我想只使用该特定选项运行一次 getopts,然后使用其他选项再次运行它。

4

2 回答 2

5

是的,之后只需重置 OPTIND。

#!/bin/bash

set -- -1
while getopts 1 opt; do
    case "${opt}" in
        1) echo "Worked!";;
        *) exit 1;
    esac
done

OPTIND=1
set -- -2
while getopts 2 opt; do
    case "${opt}" in
        2) echo "Worked!";;
        *) exit 1;
    esac
done
于 2008-09-28T00:18:43.663 回答
2

与较旧的 getopt 独立可执行文件相反,getopts 不会修改原始参数。您可以一遍又一遍地使用 bash 内置的 getopts,而无需修改原始输入。

有关更多信息,请参见 bash 手册页。

HTH。

干杯,

于 2008-09-28T01:03:05.507 回答