shell语法+crontab实战
crontab 定时任务
0. 三方相关文档
Linux shell bash 内置变量参考 | Tengwait
shell 脚本编程
经典的 Shell 十三问
Bash 脚本中的错误处理
一篇教会你写 90% 的 Shell 脚本
1.shell脚本入门
1.1 什么是shell和shell脚本
1.2 shell脚本语言的种类及优势
1.3 shell脚本的开发的基本规范
2.shell变量
2.1 环境变量与普通变量
本文档发布于https://mrdoc.fun
-
+
首页
Bash 脚本中的错误处理
> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [mp.weixin.qq.com](https://mp.weixin.qq.com/s/DskoKquq0Kgv4yR1LVotiA) 本文讲述了在 Bash 脚本中处理错误的一些技巧,如何获取错误代码、在执行脚本时获得详细输出、处理调试功能和错误重定向。使用这些技巧,系统管理员可以使他们的日常工作变得轻松。 **退出状态** 在 Bash 脚本中,`$?`将打印退出状态。如果返回零,则表示没有错误。如果不为零,结论就是任务可能存在一些问题。 如下是一个简单例子: ``` [root@localhost ~]# cat myscript.sh #!/bin/bash mkdir learning echo $? ``` 如果运行上述脚本一次,它将打印 0,因为该目录不存在,因此脚本将创建它。如果第二次运行该脚本,将获得一个非零值,如下所示: ``` [root@localhost ~]# sh myscript.sh [root@localhost ~]# sh myscript.sh mkdir: cannot create directory ‘learning’: File exists ``` **最佳实践** 建议通过将 `set -x` 命令添加到 shell 脚本来启用调试模式,如下所示: ``` [root@localhost ~]# cat test3.sh #!/bin/bash set -x echo "Hello World!" mkdiir testing ``` 然后运行脚本查看: ``` [root@localhost ~]# sh test3.sh + echo 'Hello World!' Hello World! + mkdiir testing test3.sh: line 4: mkdiir: command not found ``` 可以编写如下调试函数,这有助于随时调用它,使用以下示例: ``` [root@localhost ~]# cat debug.sh #!/bin/bash _DEBUG="on" function DEBUG() { [ "$_DEBUG" == "on" ] && $@ } DEBUG echo 'Testing Debugging' DEBUG set -x a=2 b=3 c=$(( $a + $b )) DEBUG set +x ``` 输出内容如下: ``` [root@localhost ~]# sh debug.sh Testing Debugging + a=2 + b=3 + c=5 + DEBUG set +x + '[' on == on ']' + set +x 2 + 3 = 5 ``` **错误重定向** 可以使用标准错误输出将所有系统错误重定向到自定义文件,标准错误可以用数字 2 表示。在 Bash shell 执行它,如下所示: ``` [root@localhost ~]# mkdir users 2> errors.txt [root@localhost ~]# cat errors.txt mkdir: cannot create directory ‘users’: File exists ``` 大多数时候,很难在脚本中找到确切的行号。要打印带有错误的行号,请使用 `PS4` 选项,其中的`$LINENO`是预定义好的变量。 ``` [root@localhost ~]# cat test3.sh #!/bin/bash PS4='$LINENO: ' set -x echo "Hello World!" mkdiir testing ``` 可以在阅读错误时轻松查看行号: ``` [root@localhost ~]# sh test3.sh 5: echo 'Hello World!' Hello World! 6: mkdiir testing test3.sh: line 6: mkdiir: command not found ``` **END** **官方站点:www.linuxprobe.com** **Linux 命令大全:www.linuxcool.com**
Jonny
May 21, 2022, 9:20 a.m.
298
0 条评论
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
如遇文档失效,可评论告知,便后续更新!
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价
【阿里云】2核2G云服务器新老同享 99元/年,续费同价(不要✓自动续费)
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价
【阿里云】2核2G云服务器新老同享 99元/年,续费同价(不要✓自动续费)
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期