24小时接单的黑客

黑客接单,黑客业务,黑客技术,黑客教程,网络安全

看完这篇,写的Shell脚本更加健壮了!

文中摘自微信公众平台「编程珠玑」,作者守望老先生 。转截文中请联络编程珠玑微信公众号。

假如秉持着能跑就可以了的心态写shell脚本,是很自得的,可是当你要想写下健硕,靠谱的shell脚本,可不容易。那麼有哪些可使用的工作经验或是方式吗?

语法检查

第一个有效的方法便是利用专用工具对脚本开展查验,这一部分早已在《有了这个神器,再也不怕shell写不对了》中详细介绍过去了,它能最高水平地发觉shell脚本中具有的拼写错误,假如你还不知道,提议你肯定不可以错过了。

而为了确保脚本健硕靠谱,那麼就要确保脚本在一些独特的状况尽早发生,防止散兵游勇。一起来看看有什么行得通的方法。

脚本不成功时即退出

可以在脚本的开始设定如下所示:

  • set-e
  • 举例说明:

  • #!/bin/bash
  • set-e
  • lp#这儿运作会出差错
  • date
  • 这样的事情下,运作一旦出差错便会退出,绝不放过一个问题:

  • $./test.sh
  • lp:Error-nodefaultdestinationavailable.
  • 当然,这也是有不行的地区,有时指令执行原本就可能是不成功的,你或是期待它再次,可以临时性再加上|| true:

  • #!/bin/bash
  • set-e
  • lp||true
  • date
  • 但是本人感觉这种的设定用途并不是尤其大,由于许多情况下也是必须解决差异的不正确状况,而那样只有要不碰到不正确退出,要不觉得恰当,造成没法来到出现异常支系。

    根据set e设定回家:

  • set-e
  • #command
  • set e
  • #othercommand
  • 打印出脚本执行全过程

    调节环节,你也许想要知道整个过程是执行了什么指令,每条命令都实际执行了哪些,可以利用下边的方法执行:

  • sh-xtest.sh
  • 或是,和上边相近,在开始再加上set -x:

  • //由来:微信公众号【编程珠玑】
  • //作者:守望老先生
  • #!/bin/bash
  • set-x
  • if[$#-lt1]
  • then
  • echo"nopara"
  • else
  • echo"para1$1"
  • fi
  • 执行时,輸出如下所示:

  • [0-le1]
  • echonopara
  • nopara
  • 前边带 的信息便是指令具体执行的,你能见到较为标准是啥,自变量被进行变成主要内容,走到了哪个支系,十分清晰。

    表明未声明的自变量

    shell中变量沒有界定,依然是可以采用的,可是它的效果很有可能不是你所预计的。举例说明:

  • //由来:微信公众号【编程珠玑】
  • //作者:守望老先生
  • #!/bin/bash
  • if["$var"="abc"]
  • then
  • echo"notabc"
  • else
  • echo"abc"
  • fi
  • 这儿原本想分辨var的信息是不是为abc,事实上var并沒有界定,可是在这儿应用并沒有出错,如果我们想尽早发觉这类问题,防止在错综复杂的脚本中问题被遮盖,那麼可以在开始再加上

  • set-u
  • 再度运作便会提醒:

  • test.sh:5:test.sh:num:parameternotset
  • 再遐想一下,你原本想删掉:

  • rm-rf$dir/*
  • 随后dir是空的情况下,变成了哪些?

    是否有一种后背发麻的觉得?

    管路指令一个不成功时全部不成功

    有时大家也许会执行相近那样的指令:

  • cattest.sh|grepif|cut-d';'-f2
  • 三条命令一行执行,如果我们期待之中一条不成功,全部指令就不成功,而防止执行后边无意义的指令,那麼可以在逐渐设定:

  • set-opipefail
  • 不设置的情形下,cat test.sh即使执行失败了,后边的grep事实上还会执行,很有可能会致使一些意想不到的状况产生,假如不愿意那样的状况产生,那麼那样设定是有幫助的。

    针对静态变量应用readonly

    通常大家会在脚本开始界定一些静态变量:

  • MY_PATH=/usr/bin
  • 而为了防止MY_PATH被出现意外改动,可以那样:

  • readonlyMY_PATH=/usr/bin
  • 那样的话,一旦后边有指令试着改动,便会出错。

  • #!/bin/bash
  • readonlyMY_PATH=/usr/bin
  • MY_PATH=/usr/local/bin
  • 运作一下试一下:

  • $./test.sh
  • test.sh:3:test.sh:MY_PATH:isreadonly
  • 看,给你提示了!

    给变量设置可选的初始值

    例如:

  • name=${1:-shouwang}
  • echo"${name}"
  • 这儿让name为$1,即第一个主要参数,而当它为空时,令name为shouwang。

    好几条指令实行应用&&

    例如:

  • cmd0;cmd1;cmd1
  • 这儿假如cmd0失败了,后边的指令依然会实行,而如果不期待后边的指令实行,可以应用:

  • cmd0&&cmd1&&cmd1
  • 使用函数公式

    脚本制作自身较为短还行,而脚本制作一旦拉长,不应用函数公式,将促使脚本制作难以维护保养,易读性也很差。

    汇总

    事实上最初详细介绍的脚本制作查验专用工具就己经十分合理了,基本上的失误都能查验出去,而其余的內容,大量的是关心于脚本制作调节,绝不放过一切一个有可能的不正确。

    最终,或是优先选择强烈推荐shellcheck专用工具。详细地址:https://www.shellcheck.net

    创作者:守望,linux运用开发人员,现阶段在微信公众号【编程珠玑】?共享Linux/C/C /算法设计与优化算法/专用工具等原创设计技术性文章内容和教学资源。

    全文连接:https://mp.weixin.qq.com/s/EpCoiHHpCdPcj8kkeRjHjw

    • 评论列表:
    •  性许槿畔
       发布于 2022-06-02 02:46:30  回复该评论
    • 函数公式脚本制作自身较为短还行,而脚本制作一旦拉长,不应用函数公式,将促使脚本制作难以维护保养,易读性也很差。汇总事实上最初详细介绍的脚本制作查验专用工具就己经十分合理了,基本上的

    发表评论:

    «    2025年1月    »
    12345
    6789101112
    13141516171819
    20212223242526
    2728293031
    文章归档
    标签列表

    Powered By

    Copyright Your WebSite.Some Rights Reserved.