作家
登录

编写Linux Shell脚本的最佳实践

作者: 来源: 2017-08-11 19:01:17 阅读 我要评论

敕令并行化

当我们须要充分推敲履行效力时,我们可能须要在履行敕令的时刻推敲并行化。shell中最简单的并行化是经由过程”&”以及”wait”敕令来做:

  1. func(){ #do sth } for((i=0;i<10;i++))do func & done wait 

当然,这里并行的次数不克不及太多,不然机械会卡逝世。稍微精确的做法比较复杂,今后再评论辩论,如不雅图省事可以应用parallel敕令来做。

应用新写法

这里的新写法不是指有多厉害,而是指我们可能更欲望应用较新惹人的一些语法,更多是偏向代码风格的,比如

  • 尽量应用func(){}来定义函数,而不是func{}
  • 尽量应用[[]]来代替[]
  • 尽量应用$()周详令的结不雅赋给变量,而不是反引号
  • 在复杂的场景下尽量应用printf代替echo进行回显

事实上,这些新写法很多功能都比旧的写法要强大年夜,用的时刻就知道了。

其他小tip

  1. #method1 find . -name '*.txt' |xargs sed -i "s/233/666/g;s/235/626/g;s/333/616/g;s/233/664/g" 

推敲到还有很多零碎的点,就不一一展开了,这里简单提一提。

  • 路径尽量保持绝对路径,绝多路径不轻易掉足,如不雅非要用相对路径,最好用./润饰
  • 优先应用bash的变量调换代替awk sed,如许加倍简短
  • 简单的if尽量应用&& ||,写成单行。比如[[ x > 2]] && echo x
  • 当export变量时,尽量加上子脚本的namespace,包管变量不冲突
  • 会应用trap捕获旌旗灯号,并在接收到终止旌旗灯号时履行一些收尾工作
  • 应用mktemp生成临时文件或文件夹
  • 应用/dev/null过滤不友爱的输出信息
  • 会应用敕令的返回值判毕敕令的履行情况
  • 应用文件前要断定文件是否存在,不然做好异常处理
  • 不要处理ls后的数据(比如ls -l | awk '{ print $8 }'),ls的结不雅异常不肯定,并且平台有关
  • 攫取文件时不要应用for loop而要应用while read

静态检查对象shellcheck

概述

为了大年夜轨制上包管脚本的质量,我们最简单的设法主意大年夜概就是搞一个静态检查对象,经由过程惹人对象来弥补开辟者可能存在的常识盲点。

安装

Debian,Arch,Gentoo,EPEL,Fedora,OS X,openSUSE等等各类的平台的主流担保理对象。安装便利。具体可以参照安装文档

集成

样例

在文档的Gallery of bad code里,也供给了异常具体的“坏代码”的标准,具有异常不错的参考价值,可以在闲下来的时刻当成”Java Puzzlers“之类的书来读读照样很舒畅的。

不过,其实我认为这个项目最最精华的部分都不是膳绫擎的功能,而是他供给了一个异常异常强大年夜的wiki。在这个wiki里,我们可以找到这个对象所有断定的根据。在这里,每一个检测到的问题都可以在wiki里找到对应的问题单号,他不仅告诉我们”如许写不好”,并且告诉我们”为什么如许写不好”,”我们应当怎么写才好”,异常合适刨根问底党进一步研究。

参考材料

  • 关于 shell 脚本编程的10 个最佳实践
  • shell脚本编写规范
  • Shellcheck Tool
  • Best Practices for Writing Bash Scripts
  • Good coding practices for bash
  • Design patterns or best practices for shell scripts
  • bashstyle(GITHUB)
  • BashGuide/Practices
  • Obsolete and deprecated syntax
  • ANSI/VT100 Control sequences 

【编辑推荐】

  1. 如安在Linux下编译安装OpenCV
  2. 最全Linux的发行版简介,一文读懂各发行版之间的接洽和差别
  3. 安装WMware 在Windows平台下进修Linux
  4. 17个案例带你3分钟搞定Linux正则表达式
  5. CoreOS,一款Linux容器发行版
【义务编辑:枯木 TEL:(010)68476606】

  推荐阅读

  如何监听页面 DOM 变动并高效响应

比来在做 chrome 插件开辟,既然是插件那就不免纰谬现有页面做一些控制,比如事宜监听、调剂构造、对 DOM 元素的增删改查等等。个中有一个需求比较有意思,便整顿一基层便把涉及到的常识>>>详细阅读


本文标题:编写Linux Shell脚本的最佳实践

地址:http://www.17bianji.com/lsqh/36661.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)