Strict Mode Set EUO Pipefail Trap
Harden shell scripts with set -euo pipefail and an ERR trap, converting silent failures into loud, traceable exits.
Code
#!/usr/bin/env bash
# 严格模式三件套 + 错误陷阱
set -euo pipefail
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
on_error() {
local exit_code=$?
local line=${BASH_LINENO[0]:-unknown}
echo "Error: 脚本在第 ${line} 行失败,退出码 ${exit_code}" >&2
echo "Error: 执行到此处时的命令:${BASH_COMMAND}" >&2
exit "${exit_code}"
}
trap on_error ERR
# pipefail 演示:管道中段失败不再被吞掉
count_lines() {
grep -c '^data:' "$1" || true # 显式容忍:grep 无匹配返回 1
}
main() {
local input="${SCRIPT_DIR}/events.log"
local lines
lines=$(cat "$input" | wc -l) || return 1
echo "total lines: ${lines}"
echo "data lines: $(count_lines "$input")"
}
main "$@"
Report a problem with this exampleOpens a pre-filled issue on GitHub.