regmatch(re, text) 函数将比较正则表达式和文本,如果没有匹配的话就生成 Null 值,否则生成一个由成对整数组成的数组(双元素数组) 。每一对中的第一个整数表示匹配的开始;第二个整数表示匹配结束 。这解释了最后一行代码中 substr(text, match[0], match[1]) 的使用 。
执行完比较后,可以迭代结果 。如果在任何时候不再需要编译后的正则表达式,则使用 regfree() 删除它 。还有一个 regfreeall() 函数可以处理所有已编译表达式所持有的所有资源 。
Squirrel Shell 的限制
在理想情况下,相同的编程逻辑将应用到 Unix、Linux 和 Windows 中,并且效率至少和以前一样高,这样程序员会更加高兴 。可惜操作系统各不相同,您经常需要为了某个特定系统而求助于定制代码 。
在这些情况下,无论是 Squirrel Shell 还是您都无法脱离平台,Squirrel Shell 提供了一个方便的函数来探测操作系统,这样代码就可以适当的执行 。
清单 6 展示了如何使用 platform() 函数作出决策 。该函数始终返回一个值,但是该值可能是 unknown 。
清单 6. platform() 函数生成操作系统类型
print( "Made by ... ");
local platform = platform();
switch ( platform ) {
case "linux":
printl( "Linus." );
break;
case "Macintosh":
printl( "Steve." );
break;
case "win32":
case "win64":
printl( "Bill." );
break;
default:
printl( "Unknown" );
}
您可以通过 Squirrel Shell 环境变量 PLATFORM 查找当前平台的类型:
> printl( PLATFORM );
linux
环境变量 CPU_ARCH 生成处理器,shell 将针对该处理器进行编译:
> printl( CPU_ARCH );
x86
结束语
【对话 UNIX: Squirrel--可移植的 shell 和脚本语言】Squirrel Shell 的其他函数将管理文件、处理环境和执行策略 。实际上,它的三角学内置函数就有 20 余种 。Version 2.0 目前正在规划之中,并且将包含更多类、对 Unicode 的支持、改进的交互模式,以及一个模块化的插件架构 。
Squirrel Shell 并不算得上一种交互式 shell,但是这没关系 。在这方面已经出现了很多选择 。作为一种脚本运行程序,Squirrel Shell 要比其同类出色许多 。其数据结构要比传统 shell 更加强大,它的语法简单易懂,其底层虚拟引擎支持从枚举类型到线程等所有内容 。Squirrel 引擎也很小巧,不超过 6000 行代码 。您甚至可以将完整的 Squirrel 嵌入到另一个应用程序中 。
当您需要为两个平台编写代码时,请尝试使用 Squirrel Shell!它使您能够轻松编写自己的代码 。
推荐阅读
- 跟踪 UNIX 应用程序的解决方案
- UNIX操作系统复杂的关机过程
- Unix文件名与Windows文件名的差异
- Unix中利用转义和引用来管理元字符
- 自动杀死Unix僵死的进程
- Unix操作系统中处理字符串问题的简单方式
- SCO unix三种安装BTLD的方式
- UNIX及SYBASE的安装
- 在Sco Unix下拨号上网
- 如何自动杀死UNIX僵死的进程
