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。
干杯,
抢