各种脚本语言,比如shell和tcl、perl有啥区别呢?
一、指代不同
1、perl:一种功能丰富的计算机程序语言,运行在超过100种计算机平台上。
2、tcl:工具命令语言。
3、shell:为使用者提供操作界面”的软件(命令解析器)。
二、特性不同
1、perl:l借取了C、sed、awk、shell脚本语言以及很多其他程序语言的特性,其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。
2、tcl:本身不提供面向对象的支持。但是语言本身很容易扩展到支持面向对象。许多C语言扩展都提供面向对象能力,包括XOTcl,Incr Tcl等。另外SNIT扩展本身就是用TCL写的。
3、shell:交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令。
三、优势不同
1、perl:可以很容易操作数字,文本,文件和目录,计算机和网络,特别是程序的语言。这种语言应该很容易运行外部的程序并且扫描这些程序的输出获取感兴趣的东西。
2、tcl:经常被用于 快速原型开发,脚本编程,GUI和测试等方面。
3、shell:作为程序设计语言,定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
参考资料来源:百度百科-TCL语言
参考资料来源:百度百科-perl
参考资料来源:百度百科-shell
2、perl可以说是对shell的扩展,在编写的灵活性、跨平台性都有提高,特别是在文本处理上有独到的地方。另外,perl的用途广泛如:开发CGI,功能上远远不止维护系统这么简单。
3、tcl可以看做C库,十分方便被C\C++调用,另外,tcl容易被扩展或者缩减,十分方便被移植到特定的软件平台中,作为专业的脚本。我知道很多EDA工具内嵌tcl语言。
shell类似于dos中的批处理,但很多shell也具备明显的编程语言特征,变量、循环之类的都很完善。perl也是解释性的脚本,相比shell已经是一个成熟而完整的语言,具备丰富的代码库。由于绝大多数Unix/Linux实现都内置了perl,因此不需要考虑解释执行环境的问题,如楼上所说,文本处理是perl的强项,其实perl可以做绝大多数应用,我用perl写过聊天室、socket接口程序,简单的http服务器,感觉确实非常方便,更重要的是perl执行效率远远高于shell,有的文本处理用shell脚本处理太慢的时候,用perl提升很大。
一般情况下,可以把shell和perl结合起来用,比如对目录下文件遍历处理,perl可以做,但是不如shell简单明了,文件本身处理则用perl来做,这样往往可以取得性能和效率的平衡。
1、shell 主要用来管理和使用系统。一些程序启动停止脚本、安装、打包等
2、perl 开发CGI,做数据迁移,处理文件。
3、tcl + expect 可以做自动应答,经常用来做自动化测试。