当前位置: 移动技术网 > 网络运营>服务器>Linux > Bash脚本内置的调试方法技巧

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

2017年12月12日  | 移动技术网网络运营  | 我要评论
用 bash 写的脚本也可以进行调试,和 python,perl 等解释型语言一样。新建一个名为 servinfo 的脚本并增加可执行权限: 复制代码 代码如下: $

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

复制代码 代码如下:

$ vi servinfo

#!/bin/bash

echo "hostname: $(hostname)"
echo "date: $(date)"
echo "kernel: $(uname -mrs)"

$ chmod +x servinfo


用 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

如果想同时打印行号的话,可以在脚本开头加上:
复制代码 代码如下:

export ps4='+${bash_source}:${lineno}:${funcname[0]}: '

执行结果为:
复制代码 代码如下:

$ 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

如果只想调试其中几行脚本的话可以用 set -x 和 set +x 把要调试的部分包含进来:
复制代码 代码如下:

#!/bin/bash

echo "hostname: $(hostname)"
set -x
echo "date: $(date)"
set +x
echo "kernel: $(uname -mrs)"


这个时候可以直接运行脚本,不需要执行 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

如果要调试一个非常复杂的 bash 脚本的话,建议用专门的调试工具,比如:

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网