你可以在同一个脚本中使用两次bash“getopts”函数吗?是bash getopts函数对命令行选项的破坏吗?
我有一套选项,这将意味着不同的事情取决于具体的选项的价值。由于我不能保证getopts会首先评估特定的选项,所以我想运行getopts一次,只使用该特定选项,然后使用其他选项第二次运行它。
你可以在同一个脚本中使用两次bash“getopts”函数吗?是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
getopts不会修改原始参数,而不是旧的getopt独立可执行文件。您可以反复使用bash内置的getopts,而无需修改原始输入。
查看bash手册页获取更多信息。
HTH。
欢呼声,
罗布
可悲的是,这表明主要是`设定 - ...`是破坏性的。为了证明getopts是非破坏性的,你可以再次使用第1个选项(并省略第二个`set --`语句)。或者,每次循环后都会回显“$ @”。 – 2008-09-28 06:51:28