调试技巧 #

一、调试选项 #

bash
#!/bin/bash

# 显示执行的命令
bash -x script.sh

# 显示命令和输入
bash -xv script.sh

# 检查语法
bash -n script.sh

二、set选项 #

bash
#!/bin/bash

# 显示执行的命令
set -x

# 遇到错误退出
set -e

# 使用未定义变量报错
set -u

# 管道错误退出
set -o pipefail

# 组合使用
set -euo pipefail

三、调试函数 #

bash
#!/bin/bash

debug() {
    if [[ "$DEBUG" == "true" ]]; then
        echo "[DEBUG] $*" >&2
    fi
}

DEBUG=true
debug "变量值: $var"

四、错误追踪 #

bash
#!/bin/bash

# 显示错误位置
trap 'echo "错误发生在第 $LINENO 行"; exit 1' ERR

# 使用caller
show_call_stack() {
    local frame=0
    while caller $frame; do
        ((frame++))
    done
}

trap 'show_call_stack' ERR

五、实战示例 #

bash
#!/bin/bash

# 完整的调试脚本模板
#!/bin/bash
set -euo pipefail

# 调试模式
if [[ "${DEBUG:-false}" == "true" ]]; then
    set -x
fi

# 错误处理
trap 'error_handler $? $LINENO' ERR

error_handler() {
    echo "错误: 脚本在第 $2 行失败,退出码: $1"
    exit $1
}

# 主逻辑
main() {
    echo "执行主逻辑"
}

main "$@"

下一步 #

你已经掌握了调试技巧,接下来让我们学习 错误处理

最后更新:2026-03-27