gpt4 book ai didi

bash - 为什么 getopts 只在第一次起作用?

转载 作者:行者123 更新时间:2023-11-29 09:12:49 26 4
gpt4 key购买 nike

为什么这个选项只在第一次使用时有效,然后每隔一段时间就被忽略了?就像在不使用该选项时正在重置一样。

这是我的功能:

testopts() {
local var="o false"
while getopts "o" option; do
case "${option}" in
o)
var="o true"
;;
esac
done
echo $var
}

运行它时,它只会在第一次传递选项时返回 true。

$ testopts
o false
$ testopts -o
o true
$ testopts -o
o false

最佳答案

您需要在函数顶部添加这一行:

OPTIND=1

否则在 shell 中连续调用该函数不会将其重置,因为函数每次都在同一个 shell 中运行。

根据help getopts:

Each time it is invoked, getopts will place the next option in the shell variable $name, initializing name if it does not exist, and the index of the next argument to be processed into the shell variable OPTIND. OPTIND is initialized to 1 each time the shell or a shell script is invoked.

关于bash - 为什么 getopts 只在第一次起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41643352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com