通过对shell脚本的学习,完成实习所安排的第一个脚本任务,我也对Linux shell有了一些基本认识:
一、优点方面:
1.shell的语法和结构比较简单,易于掌握
2.学习和使用也比较方便,上手比较容易
3.常用命令也比较好记,不清楚的情况下,可以通过man命令迅速找到相关的说明
4.shell是解释型语言,运行之前不需要编译
5.文本处理方面,主要依赖于awk、sed这两把尖刀,能够方便快捷地处理相当复杂的问题
6.程序开发的效率非常高,依赖于功能强大的命令可以迅速地完成开发任务
二、缺点方面:
1.弱类型语言,对变量定义的查检不是很严格
2.效率上存在的劣势:shell相当于一个接口,大部分的功能全部靠外部程序来完成,如shell在调用awk、sed的进程来处理文件时,需要产生一个新的进程,并且还需要使用管道进行IPC进程通信,那么就会增大相应的开销。在文本处理过程中,原本一个工具一次能完成的任务,在需要经过awk和sed等多次管道后,程序性能的降低是必然的。因此,按照这个观点来看的话,完成同样功能的C代码要比shell快(我会进一步做测试验证这个想法)。结合shell易于开发,但效率不高的特点,可以用一句话来概括:“shell的开发产能优于运行的性能”
3.I/O性能不高:之前看过一篇文章介绍,shell的I/O性能比perl要差,我会进一步做测试来验证这个观点是否正确。
4.一些细节上的不足:向awk传入shell定义的变量时,表达式比较复杂,且对shell的变量是只能读取而不能修改。
通过上周的学习和脚本的编写,我对shell的大概认识如上所述。
这周工作计划:学习Python,并用python完成第二个脚本的任务,在周末做一个有关python学习小结,并把python与shell从运行效率、I/O等性能方面做一下对比。