作为常用的脚本语言,简单从语法上做下对比。
lua | python | shell | |
---|---|---|---|
注释 | –或--[[ --]] | # 或‘’‘’‘’或""" | # |
运算符 | ~= 无位运算 and or not | // :整除, ** :次幂 位运算 @ 关系运算符1 != in (not in) is (is not) | -gt,-lt,-eq,-ge,-le,-ne,=,-z,-f,-n,算术运算符略 |
数据类型 | nil boolean number string table function 默认全局变量 局部变量用local 修饰 | None number(bool complex float int) sequeue(tuple string list bytes) set mapping(dict) 全局变量global修饰 | - |
条件结构 | if – then elseif – then --else end 0 ,空串 当做真处理,nil 和 false当做假处理 | if --: elif–: else: | if – then elif – then else fi |
循环结构 | for/while xxx do 代码块 end | for/while xxxx: 代码块 | for/while xxxx do 代码块 done |
switch | 无 | 无 | case xxx in x) xxxx;; esac |
break | 有 | 有 | 有 |
continue | 无 | 有 | 有 |
函数 | function xxx(a,b) 代码块 end | def xxx(a,b):代码块 | xxx() { 代码块 } |
调用方式 | xxx(1,2) | xxx(1,2) | xxx 1 2 $# 参数数量,$1 参数1 |
返回值 | 可返回多个值,可少于或多于接收项2 | 可返回多值,但要求个数与接收项一致 | 使用$?单独获取,返回单个值 |
数据长度 | #data | len(data) | ${#data} 数组长度 ${#data[*]} |
打印输出 | echo | ||
单双引号 | 无特殊区别 | 无特殊区别 | 单引号内容原样输出,双引号可输出变量值 |
获取参数类型 | type(x) | type(x) | – |
下标 | 从1开始,下标0无效 | 从0开始 | 从0开始 |
句尾标点 | 无 | 无 | 无 |
类似api | string.char() string.byte() string.gsub() | chr() ord() str.replace() | – |
引入包 | require | import | - |