SHELL脚本攻略(读书笔记)--1.10 调试脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SHELL脚本攻略(读书笔记)--1.10 调试脚本相关的知识,希望对你有一定的参考价值。

使用sh -x或这bash -x可以调试脚本,调试时会为每一行输出并输出状态,通过它也可以看出脚本中命令的执行顺序。也可以在脚本中使用set设置调试区域。

例如调试上面的time_calculate.sh脚本。

[[email protected] tmp]# sh -x time_calculate.sh

++ date +%N

+ start_time=086352877

+ find / -type f -name ‘*.db‘

++ date +%N

+ end_time=352144614

++ echo ‘scale=6;352144614/10^6‘

++ bc

+ diff_time=352.144614

+ echo 352.144614

352.144614

如果哪个地方执行出错将会显示出来。

例如,修改time_calculate.sh脚本,将计算部分修改成错误的表达式,并设置这部分调试。

[[email protected] tmp]# cat time_calculate.sh

#!/bin/bash

#以微秒为单位计算

start_time=$(date +%N)

find / -type f -name "*.db" &>/dev/null

end_time=$(date +%N)

#diff_time=$(echo "scale=6;$((end_time-strat_time))/10^6" | bc)

set -x   ?从这里开始调试

diff_time=$(echo "scale=6;$(end_time-strat_time)/10^6" | bc)   ?将这里修改出错

echo $diff_time

set +x   ?这里结束调试

执行脚本:

[[email protected] tmp]# sh time_calculate.sh

++ bc

+++ end_time-strat_time

time_calculate.sh: line 8: end_time-strat_time: command not found  ?前面没加号+的就是错误的地方。

++ echo ‘scale=6;/10^6‘

(standard_in) 1: syntax error

+ diff_time=

+ echo

 

+ set +x

因为/bin/bash也可以执行-x调试,所以直接在脚本的开头部分#!/bin/bash加上-x就可以总是调试。即#!/bin/bash -x。

以上是关于SHELL脚本攻略(读书笔记)--1.10 调试脚本的主要内容,如果未能解决你的问题,请参考以下文章

SHELL脚本攻略(读书笔记)--1.11 命令替换和子shell的作用

SHELL脚本攻略(学习笔记)--1.8 别名

SHELL脚本攻略(学习笔记)--1.5 进行数学运算

SHELL脚本攻略(学习笔记)--1.7 数组

SHELL脚本攻略(学习笔记)--1.12 read基础

SHELL脚本攻略(学习笔记)--1.4 变量(基础)