错误处理 #
一、错误检测 #
bash
#!/bin/bash
# 检查命令执行结果
if ! command; then
echo "命令执行失败"
exit 1
fi
# 使用 || 处理错误
command || { echo "失败"; exit 1; }
# 检查退出码
command
if [ $? -ne 0 ]; then
echo "失败"
fi
二、错误处理函数 #
bash
#!/bin/bash
die() {
echo "错误: $*" >&2
exit 1
}
warn() {
echo "警告: $*" >&2
}
# 使用示例
[ -z "$1" ] && die "参数不能为空"
三、错误处理模式 #
bash
#!/bin/bash
# 使用set -e
set -e
# 错误陷阱
trap 'error_handler $? $LINENO $BASH_LINENO' ERR
error_handler() {
local exit_code=$1
local line_no=$2
local bash_lineno=$3
echo "错误: 退出码=$exit_code, 行号=$line_no"
# 清理工作
cleanup
exit $exit_code
}
cleanup() {
# 清理临时文件
rm -f /tmp/temp_$$.*
}
四、实战示例 #
bash
#!/bin/bash
# 完整的错误处理模板
#!/bin/bash
set -euo pipefail
readonly SCRIPT_NAME=$(basename "$0")
readonly LOG_FILE="/var/log/${SCRIPT_NAME}.log"
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE"
}
error() {
log "[ERROR] $*"
}
die() {
error "$@"
exit 1
}
cleanup() {
log "清理资源..."
# 清理逻辑
}
trap cleanup EXIT
trap 'die "脚本在第 $LINENO 行被中断"' INT TERM
main() {
log "开始执行"
# 验证参数
[ $# -lt 1 ] && die "用法: $0 <参数>"
# 执行任务
do_something || die "任务执行失败"
log "执行完成"
}
main "$@"
下一步 #
你已经掌握了错误处理,接下来让我们学习 系统监控脚本!
最后更新:2026-03-27