首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux基础>软件应用>正文

使用自由软件Rexx 的实现来编写脚本

http://www.oklinux.cn  2006-12-18  来源: oklinux收集整理   会员收藏  游客收藏  【 】 
    很容易在“小语言”的世界中迷失方向 —— 它们中相当多是出于一个公司、个人或者一个项目的特殊需要而编写出来的。Rexx 就是这些语言中的一个,已经在 IBM 的操作系统上使用很长时间了,而且令人满意的最新实现可以用于 Linux 和其他免费软件操作系统。在相对粗糙的 shell 脚本和笨重的拘泥形式的完全系统语言的夹缝之中,Rexx 有其用武之地。Rexx 值得很多 Linux 程序员和系统管理员将其添加到收集的关键工具中。

关于 Rexx

    Rexx 编程语言最初创建于 1979 年,是一个层次非常高的脚本语言,有特别强大的用于文本处理任务的工具。从 Rexx 诞生起,IBM 就将各种版本的 Rexx 加入到它的操作系统中 —— 从主机到中型机再到终端用户操作系统,比如 OS/2 和 PC-DOS。其他 OS 制造商,比如 Amiga,也将 Rexx 作为永远可用的系统脚本语言集成进来。此外,许多独立软件开发商为很多平台创建了 Rexx 环境。再晚些时候,ANSI 于 1996 年正式为 Rexx 采纳了一个标准。

    当前(尤其是在 Linux 或者起源于 BSD 的 OS 上),Rexx 的那些大部分早期实现,主要作为历史足迹为人们所关心。不过,两个当前保持的 Rexx 实现可以用于包括 Linux、MacOSX 和 Windows 在内的许多平台:Regina 和NetRexx。Regina 是本地执行文件,以免费软件源代码方式,或者为诸多平台预编译好的方式获得 —— 您可以像安装任何其他语言解释器一样安装它。NetRexx 是一个有趣的“混合物”。此语言派生自普通的 Rexx。更类似于 Jython 或者 Jacl,NetRexx 将类似于 Rexx 源代码编译为 Java 字节代码,并(可选)在 JVM 中运行作为结果生成的 .class 文件。

    NetRexx 是一个 IBM 项目,用于为 Java 虚拟机编译类似于 Rexx 的代码。在实际能力和编程级别上,Rexx 最接近于 bash 加上 GNU 文件工具(外加 grepsed );或者可能相当于 awk 或 Perl。当然,相对于 Python、Ruby 或者 Java 来说,Rexx 让人感觉更为快而粗糙。Rexx 的冗长 —— 或者更应该说是,简洁 —— 类似于 Perl、Python、Ruby 或者 TCL。并且,Rexx 当然是完全 Turing 的,支持模块和结构化编程,有面向专门任务的库,例如 GUI 接口、网络编程和数据库访问。但是它最自然的目标在于系统脚本的自动化和本文处理任务。与 shell 脚本一起,Rexx 使得应用程序的控制非常自然且显而易见;但相对于 bash (或者 tcshksh 等等),Rexx 中包含了更丰富的内置控制结构和(文本处理)函数。

    在文体上,Rexx 的 IBM/mainframe 根源体现在它对命令的大小写敏感;在某种次要程度上也体现在它使用标点符号相对较少 (更多用关键字而不是符号)。我倾向于认为这些特性的目的是提高可读性;但这在很大程度上取决于个人的爱好。

从流和栈开始

    作为一个简单的小例子,让我来介绍一个特别简单的工具的多个版本,它可以列出文件并对其进行编号。Rexx 和 shell 脚本的一个共同点是,它用于和底层操作系统打交道的函数相对很少 —— 几乎仅限于可以打开、读和修改文件。对大部分其他事情,您需要依赖于外部实用程序来完成手头上的工作。实用程序 numbered-1.rexx 只是处理 STDIN:


清单 1. numbered-1.rexx


#!/usr/bin/rexx
DO i=1 UNTIL lines()==0
  PARSE LINEIN line
  IF line\="" THEN
    SAY i || ") " || line
END

    无处不在的指令 PARSE 可以从各种不同的源读入。在这里,它将 STDIN 的下一行赋给变量 line 。我们也会检查某一行是否为空,如果是空的话,则不进行显示和编号。例如,与 ls 组合使用我们可以得到:


清单 2. 将命令通过管道传输到 numbered-1


$ ls | ./numbered-1.rexx
1) ls-1.rexx
2) ls-2.rexx
3) ls-3.rexx
4) ls-4.rexx
5) ls-5.rexx
6) ls-6.rexx
7) numbered-1.rexx
8) numbered-2.rexx

同样您可以方便地将任何其他命令通过管道传输进来。

    Rexx 的核心概念之一是巧妙地处理多个栈或流。类似 bash 的风格,在 Rexx 中任何没有被识别为内部指令或函数的内容,都被假定为一个外部实用程序。没有特定的函数或语法用于调用外部命令。Regina 的实用程序 rxqueue 可以将输出压入 Rexx 栈,利用它我们可以写一个这样的“有编号的 ls”实用程序:


清单 3. ls-1.rexx


#!/usr/bin/rexx
"ls | rxqueue"
DO i=1 WHILE queued() \= 0
  PARSE PULL line
  SAY i || ") " || line
END

    Rexx 中有一些指令可以显式地指定要操作的栈;但是其他指令操作是在您用 ADDRESS 指令配置的 环境 中进行。STDIN、STDOUT、STDERR、文件和内存内部数据栈都以统一而优雅的方式处理。上面我们用的是外部 rxqueue 实用程序,不过在 Rexx 内部我们同样可以重定向实用程序的输出。例如:


清单 4. ls-2.rexx


#!/usr/bin/rexx
ADDRESS SYSTEM ls WITH OUTPUT FIFO '' ERROR NORMAL
DO i=1 WHILE queued() \= 0
  PARSE PULL line; SAY i || ") " || line; END

 

[1] [2] [3] 下一页  

共7页: 上一页 1 [2] [3] [4] [5] [6] [7] 下一页

上一篇:对远程数据同步工具Rsync的一些了解   下一篇:介绍一个Linux下画电路图的软件


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·介绍一个Linux下画电路图的软件
·对远程数据同步工具Rsync的一些了解
·嵌入式Linux 中的应用中的GTK+
·集成了大量软件包的DSL Linux
·在FreeBSD4.x中制作启动菜单
·Debian和Gentoo包管理机制比较及延伸
·在FREEBSD 5中使用MRTG画图
·一步一步安装服务器监视软件MRTG
·pacman终极提速--metalink
·在Linux上仿真老式操作系统
·介绍linux上两种rootkits检测工具
·使用 freeVSD强化您的开发环境
·Linux下用Mtrace来检查程序内存溢出
·RSYNC ON FreeBSD 5.2 HOWTO V1.0
·如何用APT维护红帽企业版Linux
·Linux 上的数据可视化工具
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Linux系统下源码阅读工具ctags+vim
·Linux操作系统维护常用工具Sysstat介绍
·Tcpdump:Linux下基于命令行的抓包工具
·Ubuntu Linux系统下的两个网络扫描工具
·Linux系统的股票行情分析软件
·在Linux操作系统下安装杀毒软件AntiVir
·Linux系统下一款比较易用的截图工具
·Excel电子表格导出TXT在Linux下无法显
·如何才能解决Scim和Skype之间的冲突问
·使VMware下的Ubuntu支持鼠标滚轮的方法
·Wine:Linux系统上运行Windows程序的平
·Linux系统下Matlab的安装设置
  阅读排行
·基于libmad 的简单MP3流媒体播放器的实
· Oracle 10g for ubuntu 安装指南
·Wine的安装配置
·一步一步安装服务器监视软件MRTG
· Samba使用大全 Samba服务器应用介绍
·用Geronimo部署blog 和wiki 模块
·嵌入式Linux 中的应用中的GTK+
·Linux 的版本控制
· 下BT聊QQ !PS3安装Linux ubuntu 7.10
·Linux 上的数据可视化工具
·充分利用Linux操作系统安全防护工具
·Linux下tar bz gz等压缩包的压缩和解压
·在Linux上仿真老式操作系统
·制作在软盘上跑的Linux引导器详细过程
·使用 freeVSD强化您的开发环境
网摘收藏: