美文网首页
LUA $1的读写问题

LUA $1的读写问题

作者: hi_lua | 来源:发表于2016-08-08 13:54 被阅读0次

    整理一下:

    Nginx 正则表达式捕获组变量$1、$2、$3等,也可以通过这个界面读取,方式为通过ngx.var[1]、ngx.var[2]、ngx.var[3]等。

    以上是ngx_lua api说明中的摘录。

    按api说明 应该是能取到值的。但写代码去取值 没取到,代码是这样写的:

    location = /sumc {

        set $1 9;

        set $2 10;

        content_by_lua '

            ngx.say(ngx.var[1])

        ';

    }

    运行结果:nil

    一直没取到值 ,搞不清楚原因

    location = /sumb {

        set $bb 99;

        content_by_lua_block {

            ngx.say(ngx.var.bb)

        }

    }

    运行结果:99

    这种写法是定了一个具体的参数,是能输出正确结果到网页的。

    问题的关键在于:

    sumb中的写法,我们实质上是设置一个变量并赋值。所以可以读到。而$1,它是利用正则表达式去匹配参数,第一个参数就是$1。(第一个)参数本身是可以读写的,但$1是规则,它代表参数列表中的第一个参数。规则本身不能写,只能读。故正确写法如下:

    location ~ /sumc/(9)/(10) {

        #set $1 9;

        #set $2 10;

        content_by_lua '

        ngx.say(ngx.var[1])

        ngx.say(ngx.var[2])

        ';

    }

    更多信息请参考:

    ngx_lua API

    agentzh 的 Nginx 教程

    相关文章

      网友评论

          本文标题:LUA $1的读写问题

          本文链接:https://www.haomeiwen.com/subject/oykrsttx.html