文档章节

写出健壮的Bash脚本

Feng_Yu
 Feng_Yu
发布于 2014/08/22 11:13
字数 510
阅读 452
收藏 15

转自: http://article.yeeyan.org/view/58906/257928

顺带一提,给bash脚本传递特殊的bash开关,大致有以下三个方法:

bash命令行上传递

范例:

bash -x script.sh

在解释器上直接指定

范例:

#!/bin/bash -e

执行:

chmod +x script.sh
./script.sh

在脚本中使用set

范例:

#!/bin/bash -e
#...
set +e
#这里的代码遇到非零返回时不退出脚本
set -e
# 继续执行
#注意加减号,+代表关闭某个开关,-代表增加某个开关,按照bash -switch这样的方式理解就好了,否则很容易加减号搞混

总结几个很有用的参数

-e

最频繁使用的参数,为了脚本的健壮性,理应在所有的解释器开头都加上这个参数,当脚本中任意一行出现非零退出码时,立刻中断脚本执行,可以有效的防止错误滚雪球。

-x

在调试阶段频繁使用的参数,可以打印出脚本详细执行过程,用于检查运行中的变量

-n

尽管绝大多数情况下-x用的更多,但是对于某些危险的操作(如rm),-n显得更有用,-n仅打印脚本将要执行的操作,用于检测变量,并不实际执行。当然了,无法检测运行中生成的变量。

-u

检测脚本中变量是否赋值,对于未赋值的变量不予通过,除了-e参数之外,另一个更有用的参数,对于未赋值的变量会中止执行。想想看,rm -fr "$app_root/usr",当$app_root未成功赋值时,是否冷汗都下来了?

本文转载自:http://article.yeeyan.org/view/58906/257928

共有 人打赏支持
Feng_Yu
粉丝 158
博文 38
码字总数 45571
作品 0
西安
运维
私信 提问
写出健壮的 Bash 脚本

许多人用shell脚本完成一些简单任务,而且变成了他们生命的一部分。不幸的是,shell脚本在运行异常时会受到非常大的影响。在写脚本时将这类问题最小化是十分必要的。本文中我将介绍一些让bas...

虫虫
2012/03/14
3.9K
16
写出健壮的 Bash 脚本

理文件名中的空格设置的陷阱wikipedia保持原子化 许多人用shell脚本完成一些简单任务,而且变成了他们生命的一部分。不幸的是,shell脚本在运行异常时会受到非常大的影响。在写脚本时将这类问...

长平狐
2012/09/03
145
0
使用 Argbash 来改进你的 Bash 脚本

你编写或维护过有意义的 bash 脚本吗?如果回答是,那么你可能希望它们以标准且健壮的方式接收命令行参数。Fedora 最近得到了一个很好的附加组件,它可以帮助你生成更好的脚本。不用担心,它...

作者: Matěj Týč
2018/10/27
0
0
三种直接在命令行创建GitHub仓库的形式

这里主要介绍三种直接从命令行创建仓库的形式,其实是一种方法。第一种形式,一条命令;第二种把命令存成bash语句;第三种是第二种的简化版。 零、准备工作 0.进入一个目录,这个目录是本地仓...

fanle_2013
2014/07/07
0
1
shell 下的回旋镖 进度条

在写SHELL脚本的时候 遇到一些等待时间长的命令,为了让使用者看上去更舒服,就要加一些显示让脚本看上去是在运行而不是卡死 所以我自己研究了下 写出了俩脚本来提供一个解决方案,但都有个缺...

月月鸟飞
2017/12/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

matlab-线性代数 将矩阵变成列、行向量

  matlab : R2018a 64bit     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   将矩阵变成列、行向量(按照......

志成就
9分钟前
0
0
开始使用Filebeat

认识Beats Beats是用于单用途数据托运人的平台。它们以轻量级代理的形式安装,并将来自成百上千台机器的数据发送到Logstash或Elasticsearch。 (画外音:通俗地理解,就是采集数据,并上报到...

北极南哥
11分钟前
0
0
shell getopts template

!/bin/bash# ------------------------------------------------------------------# [Author] Title# Description# ---------------------------------------------------......

易野
26分钟前
0
0
DHCP服务原理与搭建(Linux系统+路由器,二选一方案)

大家都知道上网的最基本前提是要在终端上设置IP、子网掩码、网关、DNS等地址信息,在家里或者在办公室很多时候打开电脑后发现就可以上网,并没有手动设置IP、掩码、DNS地址也能上网,这是什么...

老率的IT私房菜
35分钟前
5
0
GitLab的安装及使用教程

首页 新随笔 管理 随笔 - 575 文章 - 0 评论 - 27 GitLab的安装及使用教程 1、配置yum源 vim /etc/yum.repos.d/gitlab-ce.repo 复制以下内容: [gitlab-ce] name=Gitlab CE Repository base...

rootliu
43分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部