`
zhengdl126
  • 浏览: 2543405 次
  • 性别: 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 脚本编程最佳实践主要关注代码的可读性、规范性和维护性。以下是一些关键要点: 1. **Shebang(蛇棒)**:脚本的第一行应包含`#!`,后接解释器路径,如`#!/bin/bash`。这指定了脚本应该由哪个shell解释器执行...

    Shell脚本编程详解-吐血共享

    从编辑、赋予执行权限到执行脚本,每一个步骤都清晰地展示了Shell脚本编程的流程。 综上所述,Shell脚本编程详解提供了丰富的知识点,包括Shell命令行的基本语法、Shell脚本的编写、执行、参数传递和变量使用等。...

    高级Shell脚本编程指南

    **高级Shell脚本编程指南** 在信息技术领域,Shell脚本是一种强大的工具,它允许用户通过命令行接口自动化执行一系列操作。对于系统管理员、开发者以及任何需要处理日常任务的人来说,掌握高级Shell脚本编程技巧是...

    《Shell脚本编程诀窍——适用于Linux、Bash等》.((英)Steve Parker).[PDF]@ckook-6

    Shell脚本编程是一种在Linux和类Unix操作系统中广泛使用的自动化工具,它允许用户通过命令行接口执行一系列操作,实现批处理、系统管理任务或者复杂的任务自动化。本书《Shell脚本编程诀窍——适用于Linux、Bash等》...

    shell_脚本编程,值得参考的好书

    ### Shell脚本编程知识点概述 #### 一、Shell与操作系统的关系 **Shell**是一种命令解释器,主要用于处理用户输入的命令并执行相应的程序。在**UNIX/Linux**系统中,Shell扮演着极其重要的角色,它是用户与操作...

    Shell脚本编程指南

    ### Shell脚本编程指南 #### 一、Shell脚本编程简介 **Shell脚本编程**是一种用于编写自动化任务脚本的技术,在Unix/Linux操作系统中极为常见。对于初学者来说,掌握基本的Shell脚本编程技巧是进入Linux系统管理和...

    shell脚本编程指南

    在IT行业中,Shell脚本是UNIX和Linux操作系统中不可或缺的一部分,尤其对于金融行业软件开发人员而言,掌握Shell脚本编程技巧至关重要。这篇“LINUX与UNIX SHELL编程指南”将引领你深入理解这一领域的核心概念。 ...

    linux shell 脚本编程

    10. 最佳实践:良好的脚本编程习惯包括合理注释、避免全局变量、使用函数封装代码、错误处理和日志记录。 通过学习和实践上述内容,你将能够熟练掌握Linux Shell脚本编程,从而更高效地管理和维护Linux系统。阅读...

    高级shell脚本编程

    ### 高级Shell脚本编程知识点详解 #### 一、Shell的重要性及Bash的地位 - **Shell概述**:Shell是连接用户与操作系统之间的重要桥梁,主要用于解析并执行用户的命令。在Unix/Linux环境中,Shell不仅是执行命令的...

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

    《Linux命令行和Shell脚本编程宝典》是一本深入探讨Linux操作系统中命令行操作与Shell脚本编程的权威指南。这本书旨在帮助用户熟练掌握在Linux环境中进行高效工作的方法,无论是日常的系统管理还是复杂的自动化任务...

    Shell脚本专家指南Shell编程基础.pdf

    ### Shell脚本专家指南Shell编程基础 #### 一、Shell编程概述 Shell是连接用户与操作系统的桥梁,它提供了一种交互式的方式让用户能够通过命令行界面与系统进行交互。Shell脚本则是一种用于自动执行一系列Shell...

    Linux Shell脚本编程PDF

    Linux Shell脚本编程是Linux操作系统中的重要组成部分,它允许用户通过编写脚本来自动化日常的命令行任务,提高工作效率。这份PDF文件集很可能包含了全面的Shell脚本编程教程,旨在帮助学习者掌握这一强大的工具。 ...

    shell脚本编程的初级学习资料

    本资料旨在为初学者提供一个入门级别的理解,帮助他们掌握基本的shell脚本编程技巧。 在“SHELL基础培训”这个压缩包中,可能包含了一系列的教程、示例脚本和练习,旨在帮助学习者逐步掌握shell脚本的基础知识。...

    Shell脚本.rar

    这个"Shell脚本.rar"压缩包很可能包含了多本关于Shell编程的书籍资源,帮助学习者深入理解并掌握Shell脚本编程的基础和高级技巧。 在学习Shell脚本编程时,首先需要了解以下几个关键知识点: 1. **基础语法**:...

    Shell脚本学习指南_中文版,shell脚本基础,LINUX

    10. **Shell脚本的最佳实践**:包括良好的注释习惯、错误处理机制、避免命令注入漏洞等,以提高脚本的可读性和安全性。 通过阅读“Shell脚本学习指南_中文版.pdf”,你可以逐步掌握这些知识点,并运用到实际工作中...

    Shell脚本专家指南

    五、Shell脚本最佳实践 1. 脚本结构:如何组织脚本以提高可读性和可维护性。 2. 代码风格:遵循良好的命名规范和代码格式,提升代码质量。 3. 错误处理:编写健壮的脚本,包括错误检测和恢复机制。 4. 模块化设计:...

    Linux shell 脚本攻略源代码第二版

    《Linux shell 脚本攻略-第二版》是一本深受赞誉的书籍,旨在帮助读者深入理解并掌握Shell脚本编程。这本书的源代码合集提供了丰富的实例,供读者实践和学习。 Shell脚本的基础在于Bash(Bourne-Again SHell),它...

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

    8. Shell编程最佳实践:了解编写可读性好、可维护性强的Shell脚本的方法。 三、高级Linux技巧 1. 链接:理解硬链接和软链接的区别,以及如何创建和管理它们。 2. 符号解析:了解shell如何解析命令行,理解命令别名...

    linux下101个shell脚本

    "Linux下101个shell脚本"是一份宝贵的资源,涵盖了从基础到高级的各种shell脚本示例,对于想要深入学习Linux shell编程的人来说是不可多得的学习材料。 一、Shell脚本基础 Shell脚本本质上是文本文件,包含了一系列...

Global site tag (gtag.js) - Google Analytics