bash getopts函数对命令行选项具有破坏性吗?

时间:2020-03-06 14:50:09  来源:igfitidea点击:

我们可以在同一脚本中两次使用bash的" getopts"功能吗?

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

解决方案

是的,稍后再重置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

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

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

HTH。

干杯,