版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/du1055669885/article/details/82763486
(1)静态检查语法错误:
sh -n 脚本名;
(2)动态运行逻辑错误:
【2.1】sh -c '语句',运行一小句;
【2.2】sh -v 脚本名,运行脚本,输出运行的,原始语句;
【2.3】sh -x 脚本名,运行脚本,输出运行的,语句,并替换符号变量;
使用方式:
1).在命令行提供参数:$ sh -x script.sh
2).脚本开头提供参数:#!/bin/sh -x
3).在脚本中用set命令启用or禁用参数:
其中set -x表启用,set +x表禁用
调试输出:
stdin上面输出+开始的shell脚本语句;
其中,多个加号的情况,是在该行中被调用的层次,例如:
脚本:vara=110
varb=`echo ${vara}`
+ vara=110
++ echo 110
+ varb=110
备注解释:
每行,行首显示+,其值为环境变量$PS4;
为sh -x追加行号显示:
export PS4='+{$LINENO:${FUNCNAME[0]}} '
$LINENO,代表shell脚本的当前行号
$FUNCNAME,函数的名字,包含了整个调用链上所有的函数的名字,[0]当前函数,[1]上个调用函数...
(3)使用工具调试:
bashdb,可以单步,断点跟踪。