美文网首页
shell小技巧

shell小技巧

作者: 西三旗靓仔 | 来源:发表于2020-01-04 14:58 被阅读0次

如何能让自己的shell显得不那么业余?下面6点实践一定有用。

一、以下面的语句开场

  #!/bin/bash
  set -o nounset
  set -o errexit

set -o nounset

在默认情况下,遇到不存在的变量,会忽略并继续执行,而这往往不符合预期,加入该选项,可以避免恶果扩大,终止脚本的执行。

set -o errexit

在默认情况下,遇到执行出错,会跳过并继续执行,而这往往不符合预期,加入该选项,可以避免恶果扩大,终止脚本的执行。这两个选项,都符合fail fast设计理念。

二、封装函数有必要

别光顾着一溜往下写,封装可以提高复用。

image

如上例:log()简单封装,能够省去很多[$(date +%Y/%m/%d\ %H:%M:%S)]的重复代码。同时,封装还能提高代码的可读性。

image

如上例:

ExtractBashComments比egrep "^#"的可读性就高很多。

三、使用readonly和local修饰变量

image
  • readonly 顾名思义,只读。

  • local 函数内变量。

别图省事,提高安全性的同时,能避免很多让人崩溃的莫名其妙的错误。脚本写得专不专业,往往不是什么高深的点,从基本功绝逼能体现。

四、使用$()代替`(反单引号)

image

为什么?看了上面的例子你就懂了:

(1)$()能够支持内嵌;

(2)$()不用转义;

(3)有些字体,`(反单引号)和’(单引号)很像,容易把人搞晕;

五、使用[[]]代替[]

用单中括号:

image

用双中括号:

image

看出差别了么?[[]]更符合人性编码:

(1)避免转义问题;

(2)有不少新功能;

新功能包含但不限于:

|| :逻辑or

&& :逻辑and

< :字符串比较(不需要转义)

== :通配符(globbing)字符串比较

=~ :正则表达式(regular expression, RegEx)字符串比较

image

需要注意的是,从bash3.2开始,通配符和正则表达式都不能用引号包裹了(所以,上面的例子,加了引号就是字面比较)。

image

所以如果表达式里有空格,必须存储到一个变量里,再进行通配符与正则的比较。

六、echo不是唯一的调试方法
可以用-n对脚本进行语法检查。

  bash -n myscript.sh

可以用-v跟踪脚本里的每个命令的执行。

  bash -x myscript.sh

可以用-x跟踪脚本里的每个命令的执行,并附加扩充信息。

当然,也可以在脚本里,添加set -o verbose or set -o xtrace

来永久指定输出调试信息。

相关文章

  • Shell 的基本使用

    这里使用的是Bash 概要语法 小技巧 当前执行shell文件的位置 参考 shell教程

  • shell小技巧

  • Shell 小技巧

    使用shell求DNA序列的反向序列: 使用Shell 求 DNA 的互补序列: 使用 Shell 求DNA反向互...

  • shell小技巧

    如何能让自己的shell显得不那么业余?下面6点实践一定有用。 一、以下面的语句开场 set -o nounset...

  • Shell 脚本中的小技巧

    Shell 脚本中的小技巧 关于变量 一,在shell 脚本中定义默认值 [图片上传失败...(image-54c...

  • shell对文件的操作

    shell对文件的操作 简介 sed命令 sed小技巧 一、简介 在shell脚本编写中,时常会用到对文件的相关操...

  • 【json&shell】在shell中构建json

    shell中json 构造的转义小技巧https://blog.huoding.com/2021/11/16/96...

  • linux shell 几个小技巧

    1、判断输入的变量否为空 比如 一个shell脚本需要 两个参数,需要判断 用户是否输入了某个参数 可以再脚本中这...

  • shell脚本编程小技巧

    总结的一些shell小技巧,时时更新中。。 (1)使用&&和||的短路特性,假如传递了参数,PARAM=参数,否则...

  • Shell 小技巧之 For 循环

    For 循环的作用在于批量处理,分享两个自己用到的例子。 1.批量转换 Flac 为 MP3 2.去除文件后缀名后的参数

网友评论

      本文标题:shell小技巧

      本文链接:https://www.haomeiwen.com/subject/ucoxactx.html