Lua语法入门
Nginx编程需要用到Lua语言,因此我们必须先入门Lua的基本语法。
初识Lua
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。官网:https://www.lua.org/

Lua经常嵌入到C语言开发的程序中,例如游戏开发、游戏插件等。
Nginx本身也是C语言开发,因此也允许基于Lua做拓展。
HelloWorld
CentOS7默认已经安装了Lua语言环境,所以可以直接运行Lua代码。
1)在Linux虚拟机的任意目录下,新建一个hello.lua文件

2)添加下面的内容
1 | print("Hello World!") |
3)运行

变量和循环
学习任何语言必然离不开变量,而变量的声明必须先知道数据的类型。
Lua的数据类型
Lua中支持的常见数据类型包括:

另外,Lua提供了type()函数来判断一个变量的数据类型:

声明变量
Lua声明变量的时候无需指定数据类型,而是用local来声明变量为局部变量:
1 | -- 声明字符串,可以用单引号或双引号, |
Lua中的table类型既可以作为数组,又可以作为Java中的map来使用。数组就是特殊的table,key是数组角标而已:
1 | -- 声明数组 ,key为角标的 table |
Lua中的数组角标是从1开始,访问的时候与Java中类似:
1 | -- 访问数组,lua数组的角标从1开始 |
Lua中的table可以用key来访问:
1 | -- 访问table |
循环
对于table,我们可以利用for循环来遍历。不过数组和普通table遍历略有差异。
遍历数组:
1 | -- 声明数组 key为索引的 table |
遍历普通table
1 | -- 声明map,也就是table |
条件控制、函数
Lua中的条件控制和函数声明与Java类似。
函数
定义函数的语法:
1 | function 函数名( argument1, argument2..., argumentn) |
例如,定义一个函数,用来打印数组:
1 | function printArr(arr) |
条件控制
类似Java的条件控制,例如if、else语法:
1 | if(布尔表达式) |
与java不同,布尔表达式中的逻辑运算是基于英文单词:

案例
需求:自定义一个函数,可以打印table,当参数为nil时,打印错误信息
1 | function printArr(arr) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小五的个人杂货铺!