`
zhengdl126
  • 浏览: 2509521 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

关于shell脚本编程的10个最佳实践

 
阅读更多

     每一个在UNIX/Linux上工作的程序员 可能都擅长 shell脚本编程。 但大家解决问题的方式却不尽相同,这要取决于对专业知识的掌握程度、使用命令的种类、看待问题的方式等等。对于那些处在shell脚本编程初级阶段的程序 员来说,遵循一些恰当的做法可以帮助你更快、更好的学习这些编程技巧。下面,我们就来讨论这些能帮助你学习shell脚本编程的方法吧。

 

1、多动手

       一些人会先通读整本教材后再上机练习。这种方法可能适用于一些人,但我却不太看好它。我的建议是,先学一些最基础的,能够让你开始编码的知识就可以了。之 后,动手写一些简单的程序。一旦你由于知识上的欠缺而不得不停止时,再回到书本上去读你想要了解的那部分,然后继续做你的项目。如此周而复始,不断提高你 的水平。这种边学边做的方法曾让我受益良多。

 

2、善用命令提示符

       有时候,我们写的脚本中有一些错误。我们修改错误,运行脚本,但系统再次报错。并且这个改错报错的过程可能会发生很多次。碰到这些情况,首先需要找到有问 题的行或命令,这可以通过一些调试语句来轻松做到。一旦发现这条语句,尝试在命令提示符下执行相同的语句。如果它在命令提示符下开始正常运行,你就可以容 易的推断出它不能正常运行的原因了。可能是由于某些错误输入的命令,或者是某些环境变量不匹配,或者是从不同的地方引用了某个二进制文件等等。这种方法会 让调试变得简单易行。

关于 shell 脚本编程的10 个最佳实践

 

3、考虑问题要全面

       现在我们来看个问题。你想到了关于某个问题的解决方案,但这个解决方案只适用于处理小型文件。可是当处理比较大的文件时,你该怎么办?举个例子,我们想要得到一个文件的第一行内容:


sed -n '1p' file

       这条语句当然会给出你想要的第一行内容。可是如果处理的文件包含上百万条记录呢?尽管上面的那条sed命令可以输出文件的第一行内容,但是想要处理大型文件一定会带来性能上的问题。

解决办法:


sed -n '1p;1q' file

这条命令将只输出第一行,同时退出程序。

 

4、经常尝试不同的方法

       你在写脚本时碰到一个问题,然后你找到了一种独特的解决方法。下一次你偶然又碰到类似的问题,这时,不要再用以前你用过的方法来解决。试试另外一种方法吧。如果某一天再次遇到这种情况,再试试其它方法。

例如:


if [ $? -eq 0 ]
then
echo "Success"
fi

另一种方法:


[ $? -eq 0 ] && echo "Success"

       现在你可能会明白这个博客里会有那么多以“……的不同解决方法”为题的文章了吧。所有这些文章的目的都是用来帮助订阅这个博客的开发者开阔视野,打开思路。

 

5、快速编码

       脚本可以节省我们的时间,提高生产力。可是,难道我们花在写脚本和测试上的时间还少吗?我们想写一个脚本,于是打开一个文件,写下代码,保存文件, 之后运行脚本,系统报错,我们再打开文件修改、保存、运行……在这个过程中会花费很多时间。在此前的一篇题为《如何快速写shell脚本》的文章里,你可 以学会如何编写脚本和测试正在运行中的脚本,而不用再回顾命令提示符。这些方法可以加快编码的速度。当我写脚本的时候,我总是使用这些方法。而且我可以很 肯定的说,它们帮我节约了不少时间。

 

6、经常使用内部命令

       无论碰到哪种情况,请尽量考虑使用内部命令而不是外部命令。在此前的一篇题为《内部命令和外部命令》的文章里,我们可以看到二者间的差异。用内部命令对你 永远都有好处。根据正在处理的输入文件的大小,内部命令可以在性能方面为你节省很多。虽然你并不总是有这样选择内部命令抑或外部命令的机会,但在某些情况 下,你一定能做出正确的选择。

 

7、没有必要使用cat命令

       这是我们经常在论坛里讨论的话题之一。没有必要使用cat命令指的是在有些时候,我们会发现根本没有必要使用cat命令。有时候,使用了多余的cat命令会让你的代码看起来很丑陋,而且还会带来性能上的问题。

例如:


$ cat /etc/passwd | grep guru

正确的方法应该是:


$ grep guru /etc/passwd


8、仔细阅读错误信息

       程序员常犯的一个错误是:当我们敲入的命令报错后,我们中的大多数人只是对错误信息一瞥而过,而不会去认真的读一读。很多时候,错误信息里就包含了解决办 法。更重要的是,有时候我们修改了某个错误并再次运行后,系统依旧会报错。然后我们再次修改,但系统再次报错。这可能会持续很长时间。但实际上,旧的错误 可能已经被纠正,只是由于出现了其它一些新错误才导致系统再次报错。而我们依旧在怀疑为什么修改好的代码依然不能正常运行。因此,请你养成仔细阅读错误信 息的习惯。

 

9、尽量避免臃肿的命令

       你正在尝试去从一个大的文件中筛选某条信息。接下来你可能写一大堆命令来实现这一功能。可是,尽管你将得到正确的结果,你写的命令却不够好,且晦涩难懂。因此,我们应该尽量避免这种情况发生。下面这个例子就是代码优化的好例子。

例如:检索用户ID值为502的用户名。

下面的命令不好:


$ grep 502 /etc/passwd | cut -d: -f1

这条命令也不够好:


$ grep 502 /etc/passwd | awk -F ":" '{print $1}'

这才是一条好的命令:


$ awk -F ":" '$3==502{print $1}' /etc/passwd

正如以上示例,用一条简单的awk命令就可以完成检索任务。

 

10、别吝啬添加注释

       写了一份脚本,一两个星期后,你再次打开脚本文件,如果没有注释在里面的话,你可能会花上很多时间才能理解这些代码。虽然代码是我们自己写的,但这依旧会 浪费我们很多的时间。脚本是用来节省时间的,因此,我们没有理由浪费时间去理解这些用来节省时间的文件。所以,请养成在脚本中添加注释的好习惯。 这些注释不必很详细,能让自己或别人读懂就行。

分享到:
评论

相关推荐

    Shell 脚本编程最佳实践.doc

    毕竟shell脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序供我们调用。因此很多人在写的时候也是想到哪里写到哪里,基本上都像是一段超长的main函数,不忍直视。

    Shell脚本编程100例

    Shell脚本编程100例。 融汇 shell 脚本知识点,集大成之作。 本书实在是学习、进修、面试、居家旅行必备精品!

    最实用的Linux 命令行和shell脚本编程宝典

    最实用的Linux 命令行和shell脚本编程宝典,是最常用的参考手册。

    Linux 命令与Shell 脚本编程pdf书籍

    Linux命令与shell 脚本大全,内容丰富,包含了shell脚本的技术命令 以及大量的实践内容

    Linux+命令行和shell脚本编程宝典(清晰绝对完整版).rar

    Linux 命令行和shell脚本编程宝典(清晰绝对完整版).pdf,绝对完整的版本,清晰度比160多M的还要好一些,有完整书签,在CSDN上花8分下载了4个part,结果解压不了,超级郁闷。辛苦找到的这个真正完整的可以分享给大家...

    Linux Shell 脚本编程入门教程

    用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的...

    Shell脚本编程.pdf

    Shell脚本编程.pdf

    Shell脚本编程详解

    Shell脚本编程详解  Shell命令行的运行  编写、修改权限和执行Shell程序的步骤  在Shell程序中使用参数和变量  表达式比较、循环结构语句和条件结构语句  在Shell程序中使用函数和调用其他Shell程序

    Linux+命令行和shell脚本编程宝典.pdf

    linux脚本+命令总结

    LinuxShell脚本编程实例.doc

    LinuxShell脚本编程实例.doc

    shell脚本编程.pdf

    了如何发送邮件,如何构建一个菜单,不过 还有很多其他的用法。 本章将介绍以下内容: • 快速创建一个文件。 • 自动进入菜单。 • ftp传输。 • 连接至其他应用系统。 该命令的一般形式为: command t e x t w o ...

    高级shell脚本编程(CN)

    linux shell 脚本编程 linux shell 脚本编程 linux shell 脚本编程

    LinuxShell脚本编程实例.pdf

    LinuxShell脚本编程实例.pdf

    高级Shell脚本编程.zip

    这是shell中文chm文档,可供运维人员以及相关人员下载参考使用,详细的描述了shell开发中使用的各种指令和函数。

    LinuxShell脚本学习基础视频

    资源名称:Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_...

    精通UNIX Shell脚本编程(pdf 版, 附源代码)

    精通UNIX Shell脚本编程 作者:(美)Randal K.Michael著;詹文军,邓波等译 页数:502 【作 者】(美)Randal K.Michael著;詹文军,邓波等译 【形态项】 502 ; 26cm 【出版项】 北京市:电子工业出版社 , 2005....

    shell脚本编程基础

    shell sed awk作为shell编程的很好入门级文档,我开始学习的时候就是这个文档,现在遇到新手我就会推荐这个文档。

    shell脚本编程100例.doc

    Shell也是一门编程语言,即shell脚本,shell是解释执行的脚本语言,可直接调用linux命令。 一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同...

    高级shell脚本编程指南

    高级shell脚本编程指南.zip ,tuijianxuexi.

Global site tag (gtag.js) - Google Analytics