上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.9 命令行工具
OpenResty在bin目录下提供一个命令行工具resty(注意名字不是resty-cli),可以把它作为Lua语言的解释器(但运行在OpenResty环境里)代替标准的Lua 5.x,写出类似Perl、Python那样易用的脚本,是测试/运维工程师的利器。
使用“-e”参数可以在命令行里直接执行Lua代码,例如:
./resty -e "print('hello OpenResty')" #执行Lua代码,打印一个字符串
这种方式只适合执行很小的代码片段,更好的方式是利用UNIX的“Shebang”(#! ),在脚本文件里的第一行指定resty作为解释器,能够书写任意长度和复杂度的代码,而且更利于管理维护。
刚才的命令行用法可以改写成下面的脚本文件:
#! /usr/local/openresty/bin/resty -- 使用resty作为脚本的解释器
print('hello OpenResty') -- 执行Lua代码,打印一个字符串
脚本文件也支持传递命令行参数,参数存储在表arg里,用arg[N]的方式即可访问:
#! /usr/local/openresty/bin/resty -- 使用resty作为脚本的解释器
local n = #arg -- 得到参数的数量
print("args count = ", n) -- 打印参数的数量
for i = 1, n do -- 变量参数表,注意Lua下标从1开始
print("arg ", i , ": ", arg[i]) -- 输出参数
end -- 循环结束
使用参数执行脚本hello.lua,结果是:
./hello.lua FireEmblem Heroes #执行Lua代码,带两个参数 args count = 2 #打印参数的数量 arg 1: FireEmblem #输出第一个参数 arg 2: Heroes #输出第二个参数
resty工具还有很多选项用于配置行为,非常灵活,“-e”之外较常用的有:
■ -c :指定最大并发连接数(默认值是64); ■ -I :指定Lua库的搜索路径; ■ -l :指定加载某个Lua库; ■ --http-conf :定制在http域里的指令; ■ --main-include :定制在main域里的指令; ■ --shdict :定制使用的共享内存(参见10.2节); ■ --resolve-ipv6 :允许解析ipv6的地址。
其他选项如-j、-gdb等读者可以参考help或者restydoc。
本书之后在讲解Lua语言和LuaJIT环境时均采用resty作为解释器执行Lua程序。