码迷,mamicode.com
首页 > 系统相关 > 详细

shell的建议

时间:2017-02-12 15:40:49      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:复杂   awk   统一   插入   bin   grep   问题   shell   注意   

指定bash

shell脚本第一行, #! 应该是什么?

大多数情况 /usr/bin/env bash,  /bin/bash, /usr/bin/bash, /bin/sh, /usr/bin/env sh 是等价的,但是少数情况还是有坑。如默认的shell 可能不是 bash,如某个发行法本,默认sh不是bash。

所以推荐使用 /bin/bash

 

set -e 和 set -x

在具体的代码逻辑之前,先插入 一行 set -e 和 一行 set -x

set -x 会在执行每一行 shell 脚本的时候,将执行的内容输出来。所有涉及的变量都会被替换成实际的值。

set -e 会在执行出错时结束程序。(但是不是所有出错的时候都会结束程序)。

带上shellcheck

shellcheck 可以查错

注意local

写函数的时候,如果 不加 local 限定词,那么变量默认就是全局的,这和js差不多。

在顶级作用域中,是否全局没有多大影响,但是在函数中,一个全局变量就有可能污染其他作用域。所以在函数中声明的变量,一定要加上 local 限定词

复杂的逻辑还是避开shell

shell 写脚本往往就是难以移植,难以统一进行错误处理,难以利索的处理数据。所以需要配合很多外部的命令,如 grep,sed,awk 来处理。所以解决特定问题还是需要特定的工具,切换一门更通用的脚本语言,有时候更好。

 

shell的建议

标签:复杂   awk   统一   插入   bin   grep   问题   shell   注意   

原文地址:http://www.cnblogs.com/chenb/p/6391040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!