为什么getopts仅在第一次使用?

杰夫·普基特

为什么此选项仅在首次使用时起作用,而后每隔一次被忽略?就像不使用该选项时将其重置。

这是我的功能:

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

每次调用它时,getopts都会将下一个选项放在shell变量中$name,如果不存在则初始化名称,并将下一个要处理的参数的索引放入shell变量中OPTIND每次调用shell或shell脚本时都会被OPTIND初始化1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么透明度RGBA仅在第一次使用

当我使用MatDialog时,ngOnInit仅在第一次触发。为什么?

为什么我的切换仅在第一次使用?

为什么单击此按钮后不更改文本,而仅在第一次更改

为什么“发出”仅在我第一次单击按钮时不显示名称?

为什么我的regex函数仅在第一次运行?

Kafka主题似乎仅在第一次起作用。为什么?

如何使Django UpdateView仅在第一次使用?

NSURLSession dataTaskWithRequest仅在第一次使用

jQuery .on()仅在第一次使用

Android BLE:onCharacteristicRead仅在第一次使用

为什么在第一次迭代后就停止了?

为什么第一次收费很重要

为什么打开网页的JButton仅在第一次单击然后被停用时才起作用?

为什么auto_explain仅在第一次调用PL / pgSQL函数时记录嵌套语句?

为什么UnhandledExceptionEventEventArgs.Exception仅在第一次访问时返回有用的信息?

为什么pgp在我使用--passphrase-fd后第一次询问密码

第一次尝试使用并发线程。为什么我没有输出?

为什么存根只在第一次测试中使用?

关于AVFoundation:为什么我的应用程序只能在第一次使用

具有`getopts`的Bash函数仅在第一次运行时有效

为什么setTimeout()第一次只运行一次我的代码?

第一次使用Mockito

Laravel - 第一次使用

第一次使用MVC

第一次使用 FOR

第一次使用getopts运行脚本,但是第二次运行不起作用

仅在第一次或刷新时加载Javascript

动画仅在WPF中第一次出现