追踪脚本运行过程

本文介绍如何使用Shell脚本的-x参数来查看脚本执行过程,并通过输出重定向将执行过程记录到文件中,同时展示了如何在脚本中添加行号以便于调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何看到具体的执行过程?并将执行的过程完整的保存到一个文件并且显示行号

1】使用sh –x,使用-x参数能看到脚本的具体执行过程

2】使用输出重定向可以将执行过程保存到另一文件

3】显示行号:

在/etc/vimrc文件中添加行 set nu

然后在要执行的脚本中添加

trap 'echo "before execute line:$LINENO" >/dev/null' DEBUG 【添加位置在#! /bin/sh 之后,真正执行的脚本之前

eg:

[root@gbackup2 zhaoyj]# head -4 test.sh

#!/bin/sh
trap 'echo "before execute line:$LINENO" >/dev/null' DEBUG
Adir=backup
for i in fmx1 mx1 mx2 mx14

[root@gbackup2 zhaoyj]# tail -3 /etc/vimrc
set t_Sf=m
set nu
endif

4】执行命令

命令模式: sh -x ScriptName > 输出结果 2> 执行过程保存文件

或:sh -x ScriptName > 输出结果 2>&1

[root@gbackup2 zhaoyj]# sh -x test.sh > 245.backup.txt 2> log.txt

5】展示执行过程

所有以++开头的都是提示行,所有已+开头的都是脚本行

[root@gbackup2 zhaoyj]# more log.txt
+ trap 'echo "before execute line:$LINENO" >/dev/null' DEBUG
++ echo 'before execute line:3'
+ Adir=backup
+ for i in fmx1 mx1 mx2 mx14
++ echo 'before execute line:4'
+ for j in dir mysql post qmail
++ echo 'before execute line:6'
++ echo 'before execute line:8'
+ '[' dir '!=' post ']'
++ echo 'before execute line:10'
+ cd /backup/fmx1/dir/
++ echo 'before execute line:11'
+ echo -n 'backup.fmx1.dir '
++ echo 'before execute line:12'
++ echo 'before execute line:12'
+ ls -lt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值