Linux下高效编写shell脚本的10个建议

作者:上善若水

在Linux环境下工作 ,shell脚本的编写应该是一个必备的基本技能了,本文将分享 10 个写出高效可靠的shell脚本的实用技巧

本文主要内容来源于《10 Useful Tips for Writing Effective Bash Scripts in Linux》,再加上自己的一点理解而成。如果你还有一些其他更好的脚本编程经验想要分享,在下面评论框分享出来吧。

1

在脚本中多写注释

这条建议不但适合于shell脚本,对于其它编程语言同样实用。这样做的好处是可以帮助他人或者你自己后面阅读脚本时能够迅速了解脚本的功能,便于维护。试想下,如果有一天你的主管给了你一堆没有注释的代码,你是不是很抓狂呢。

shell脚本中,注释一般以#开头,后面跟着是注释的内容。注释不可少,但是注释也不是越多越好,对于shell脚本,注释一般包括下面几个部分:

1#脚本的参数

2#脚本的用途

3#脚本的注意事项

4#脚本的写作时间,作者,版权等

5#各个函数前的说明注释6#一些较复杂的单行命令注释

2

脚本中有命令运行失败时退出脚本

如果脚本中某条命令运行失败,我们不应该让其继续运行,因为这样可能会影响脚本的其余部分,导致逻辑错误。逻辑错误一般又是很难定位的,与其这样,不如让其提前结束更早的找出脚本中的错误。可以用下面的命令设置在遇到命令失败时来退出脚本执行:

# 如果命令运行失败让脚本退出执行

set-oerrexit

# 或

set-e

3

脚本中使用到未声明变量时退出脚本

脚本中使用到未声明的变量同样可能导致逻辑错误,可以用下面的命令设置脚本在使用到未声明的变量时退出执行:

# 若有用未设置的变量即让脚本退出执行

set-onounset

# 或

set-u

4

使用双引号引用变量

当使用一个变量的值时,用双引号有助于防止由于空格导致单词分割开和由于识别和扩展了通配符而导致的不必要匹配,下面的例子说明了一切。

#!/bin/bash# 若命令失败让脚本退出

set-oerrexit

# 若未设置的变量被使用让脚本退出

set-onounset

echo"Names without double quotes"

echo

names="Tecmint FOSSMint Linusay"

fornamein$names;doecho"$name

done

echo

echo"Names with double quotes"

echo

fornamein"$names";doecho"$name"

done

exit

5

在脚本中多使用函数

同样,这条建议也适用其它编程语言,函数的使用使得代码更模块化,更可读和可重用;shell脚本中定义函数的语法如下所示:

functioncheck_root()

{

command1;

command2;

}

# 或

check_root()

{

command1;

command2;

}

6

字符串比较时用=而不是==

为什么会有这个建议,原文并没有给出详细的说明,只是简单的提了句:是的同义词,因此仅用个单个来做字符串比较。不过在原文的后面有网友回答了,是因为==只适用于bash;POSIX形式是“=”,使用 = 更方便移植。

value1="tecmint.com"

value2="fossmint.com"

if["$value1"="$value2"]

7

用$(command) 代替传统的`command`

这两种形式都可以用作命令替换,所谓命令替换是用这个命令的输出结果取代命令本身。这里建议用而不是反引号 ``来做命令代换。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180326B0GB7K00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券