为什么80%的码农都做不了架构师?>>>   

公司业务有用到Lua,与nginx结合起来实现高性能的web应用,想去弄懂这方面的知识,就去了解学习了下Lua,欢迎大咔们指教。 1. Lua介绍 Lua是一门简单的编程语言,它的优势在于可以整合C++的模块来扩展自身的功能,使用数百行或更少的代码来解决复杂的问题。具有的特征有: 1.1. 可扩展性:Lua从一开始就被设计成易于扩展的语言,很多功能都是通过外部库来实现的,很容易与其他编程语言如C、C++、Java等等进行交互。 1.2. 简洁: Lua十分简洁,但是功能强大,易于学习,很适合小规模的应用。 1.3. 高效: Lua有很高的执行效率。 1.4. 可移植性: Lua可以运行在任何现有的系统上。 Lua脚本是包含一系列Lua命令的简单脚本,扩展名为.lua的文本文件。单个命令或者一系列命令组成的脚本文件,在Lua中我们把它称为代码块。 代码块:指一个控制结构内,一个函数体,或者一个chunk(变量被声明的那个文件或者文本串)。 2. Lua安装 先把Lua环境搭建起来,便于后面学习演示。

# curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gz
# tar zxvf lua-5.2.3.tar.gz
# cd lua-5.2.3/src
# make linux

2.2 常见问题解决方法 问题1: lua.c:67:31: error: readline/readline.h: No such file or directory lua.c:68:30: error: readline/history.h: No such file or directory 解决方法: # yum install readline-devel 问题2: make all SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline" make[1]: Entering directory `/root/lua-5.2.3/src' gcc -o lua lua.o liblua.a -lm -Wl,-E -ldl -lreadline /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `PC' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetflag' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetent' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `UP' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tputs' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgoto' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetnum' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `BC' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetstr' 解决方法: 由于没有链接 ncurses库,需要加上 -lncurses即可。

# vim ./src/Makefile
linux:$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline -lncurses"

3. Lua变量 在Lua中,变量不需要声明就可以使用的,因此可以在任何地方引入需要的变量。对变量的追踪就变难了。这就需要我们在使用当中,要格外的小心,以免不同函数中用了相同名字的变量而造成数据的混乱。 同时,也不需要指定变量的类型,如nul、boolean、string、number、table。变量的类型取决于给它赋的值。访问一个没有初始化的变量也不会出错,只不过得到的结果是空值nil。可以使用type函数来判断变量的类型。如:

# ./lua
> value = 'www.ttlsa.com'
> print (type(value))
string
> value = 39514058
> -- ttlsa.com 运维生存时间Q群
> print (type(value))
number

3.1 全局变量 Lua变量默认是全局的,在整个会话中将保持不变,除非改变了它。在使用全局变量时,在变量前加个g字母会更加明确。不过,尽量使用局部变量。 3.2 局部变量 使用local创建一个局部变量,与全局变量不同,局部变量只在被声明的那个代码块内有效。定义局部变量可以为它设置一个初始值,也可以不用。如 > local value1 > local vlaue2 = 'www.ttlsa.com' 4. Lua注释语法 单行注释:-- 多行注释:--[[ --]] 5. Lua命令行方式

usage: ./lua [options] [script [args]]
Available options are:-e stat  execute string 'stat'  //直接将命令传入Lua-i       enter interactive mode after executing 'script'  //进入交互模式-l name  require library 'name'  //加载一个文件-v       show version information  //打印版本信息-E       ignore environment variables //忽略环境变量--       stop handling options-        stop handling options and execute stdin
# ./lua -e "print(type('www.ttlsa.com'))"
string

全局变量arg存放Lua的命令行参数。 在运行以前,Lua使用所有参数构造arg表。脚本名索引为0,脚本的参数从1开始增加。脚本前面的参数从-1开始减少。

> lua -e "sin=math.sin" script a b
arg表如下:
arg[-3] = "lua"
arg[-2] = "-e"
arg[-1] = "sin=math.sin"
arg[0] = "script"
arg[1] = "a"
arg[2] = "b"

转载于:https://my.oschina.net/766/blog/210947

Lua之Lua安装与Lua变量-TTLSA(一)相关推荐

  1. linux下lua开发环境安装

    我前面我们介绍了nginx+lua环境的搭建,在此我们再来了解下lua开发环境的安装. 目前lua版本已经更新到lua5.3,但是我们在此安装lua5.1,因为5.1运行了好多年,有好多模块都是基于此 ...

  2. 游戏开发学习笔记——lua脚本语言——安装、汉化与小测试(解决lua运行代码乱码问题)

    游戏开发学习笔记--lua脚本语言--安装.汉化与小测试 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: Lua 是一种轻量小巧的脚本语言,用 ...

  3. Nginx安装配置Lua支持

    Nginx安装配置Lua支持 1. 环境准备 2. 下载最新的`luajit`和`ngx_devel_kit`以及`lua-nginx-module`解压 3. 解压`ngx_devel_kit`以及 ...

  4. 脚本语言lua笔记(5)c++调用lua

    首先搭建环境,使用vs2010的c++开发工具,lua源码包,可以去官方下载最新源码包,我采用的是lua-5.1.5的版本.好了,开始配环境. 第一步: 下载源码包后,解压lua-5.1.5源码包到硬 ...

  5. Lua for Windows 开始学习Lua编程

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Lua ...

  6. java lua脚本_Java中使用LUA脚本语言

    Lua 是一个小巧的脚本语言.是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ieru ...

  7. lua源代码分析01:lua源代码结构分析

    目录 一.什么是lua 二.lua源代码结构 三.阅读lua源代码顺序 一.什么是lua 1.lua是用C编写的脚本语言,可以在web.游戏.物联网等场景下使用,源代码共1万多行:可以独立编程,可以嵌 ...

  8. 【Lua进阶系列】实例lua调用capi

                             [Lua进阶系列]实例lua调用capi     大家好,我是Lampard~~     欢迎来到Lua进阶系列的博客     首先祝大家2021新年 ...

  9. Redis学习笔记 - Lua脚本(2) - Lua脚本的实现

    参考:<<Redis设计与实现>> 注:这本书是基于Redis3.0版本写的,和后面的版本有点差异 Redis中Lua脚本相关命令介绍以及简单使用,参考博客:https://b ...

最新文章

  1. php文章远程图片,php保存远程图片到本地 php正则匹配文章中的远程图片地址
  2. 【Node.js】http-server 实现目录浏览服务
  3. 移动端与pc端的区别 及 ios的 兼容性问题
  4. 如何在Kubernetes里创建一个Nginx应用
  5. 用python自制背单词程序_c++自制背单词应用
  6. leetcode1405. 最长快乐字符串(贪心算法)
  7. 和菜鸟一起学linux之bluez学习记录2
  8. python selenium中文文档-selenium-python中文版文档
  9. 通过SOAPHeader增强WebService的安全性
  10. 4.1 API : MultinomialNB、GaussianNB、BernoulliNB
  11. Linux学习笔记(一):Win10上用VMware虚拟机安装Linux-CentOS
  12. TPL中的task并不是thread
  13. nodejs读取服务器json文件,如何使用Node.js读取JSON文件
  14. 软件工程课程课后大作业
  15. linux的makefile -I(大写i)-L(大写l)-l(小写l)
  16. ubuntu 16.04上radvd起不来
  17. Crawlab(crawlab github)
  18. 文字从上到下无缝轮播,一直循环滚动轮播
  19. python字符编码用什么储存卡_python字符编码
  20. Arduino 统计中文字符串中的中文标点符号数量

热门文章

  1. 「蚂蚁」狂奔!最高估值4600亿美金,或成今年全球最大IPO
  2. 自动驾驶是汽车行业的未来 但这并不代表驾驶者能完全解放双手
  3. 迁移学习,让深度学习不再困难……
  4. 深度学习浪潮下的自然语言处理,百度NeurIPS 2019展现领域新突破
  5. 如何构建一个安全的人工智能世界?
  6. 谷歌大脑新算法,不折腾TPU就能加快AI训练速度
  7. 对抗神经网络GAN到底学到了什么
  8. 无人驾驶汽车想要“普渡众生”,还要经历15个磨难
  9. 全面梳理百度世界大会:量产L4乘用车和两款音箱 还有挖掘机技术
  10. 博客 | Machine Learning Yearning 要点笔记