• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > Bash脚本内置的调试方法技巧

Bash脚本内置的调试方法技巧

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了bash脚本,linux bash脚本,高级bash脚本编程指南,bash脚本编程,编写bash脚本等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

用 Bash 写的脚本也可以进行调试,和 Python,Perl 等解释型语言一样。新建一个名为 servinfo 的脚本并增加可执行权限:
$ vi servinfo

#!/bin/bash

echo "Hostname: $(hostname)"
echo "Date: $(date)"
echo "Kernel: $(uname -mrs)"

$ chmod +x servinfo
</div>
用 bash -x 来调试上述脚本,Bash 先打印出每行脚本,再打印出每行脚本的执行结果:
$ bash -x servinfo
++ hostname
+ echo 'Hostname: vpsee'
Hostname: vpsee
++ date
+ echo 'Date: Thu Sep  3 19:33:48 SAST 2009'
Date: Thu Sep  3 19:33:48 SAST 2009
++ uname -mrs
+ echo 'Kernel: Linux 2.6.18-128.4.1.el5 i686'
Kernel: Linux 2.6.18-128.4.1.el5 i686
</div>
如果想同时打印行号的话,可以在脚本开头加上:
export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
</div>
执行结果为:
$ bash -x servinfo
+ export 'PS4=+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
+ PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
++4:5:: hostname
+4:5:: echo 'Hostname: vpsee'
Hostname: vpsee
++4:6:: date
+4:6:: echo 'Date: Thu Sep  3 19:42:06 SAST 2009'
Date: Thu Sep  3 19:42:06 SAST 2009
++4:7:: uname -mrs
+4:7:: echo 'Kernel: Linux 2.6.18-128.4.1.el5 i686'
Kernel: Linux 2.6.18-128.4.1.el5 i686
</div>
如果只想调试其中几行脚本的话可以用 set -x 和 set +x 把要调试的部分包含进来:
#!/bin/bash

echo "Hostname: $(hostname)"
set -x
echo "Date: $(date)"
set +x
echo "Kernel: $(uname -mrs)"
</div>
这个时候可以直接运行脚本,不需要执行 bash -x 了:
$ ./servinfo
Hostname: vpsee
++ date
+ echo 'Date: Thu Sep  3 19:46:53 SAST 2009'
Date: Thu Sep  3 19:46:53 SAST 2009
+ set +x
Kernel: Linux 2.6.18-128.4.1.el5 i686
</div>
如果要调试一个非常复杂的 Bash 脚本的话,建议用专门的调试工具,比如:bashdb

</div>

您可能想查找下面的文章:

  • bash脚本编程学习之算术运算与文件查找
  • Bash脚本内置的调试方法技巧
  • 写出健壮Bash Shell脚本的一些技巧总结
  • bash脚本中if语句的使用方法
  • 如何编写健壮的Bash脚本(经验分享)
  • bash脚本输入密码不回显问题的解决方法
  • linux bash字符串处理大全
  • bash批量修改文件名称的方法小结(增加,去除,修改后缀)
  • Linux BASH多进程并行处理的方法实现

相关文章

  • shell脚本编程之for语句、if语句使用介绍
  • bash脚本编程学习之算术运算与文件查找
  • Shell脚本定义变量和重新赋值
  • Linux中10个有用的命令行补全例子
  • Shell脚本判断Linux系统是32位还是64位的几种方法分享
  • 一天一个shell命令 linux文本内容操作系列-sed命令详解
  • Linux shell脚本中字符串连接的方法
  • CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放
  • Nginx和PHP-FPM的启动、重启、停止脚本分享
  • linux 命令每天必学之tar命令

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Log4j 日志文件Linux/Mac/Windows通用存放位置设置方法
    • 给定链表中间节点指针,删除中间节点的方法
    • linux awk时间计算脚本及awk命令详解
    • Shell脚本实现监控swap空间使用情况和查看占用swap的进程
    • Bash Shell中Shift用法分享
    • 编写shell脚本将VPS上的数据备份到Dropbox网盘的方法
    • linux获取系统启动时间示例详解
    • Shell脚本中调用、引用、包含另外一个脚本文件的两种方法
    • Shell脚本case语句简明教程
    • Linux shell脚本中字符串连接的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有