Shell 脚本安全开头
写脚本时开头加上这几行,出错就停、不留坑。
模板正文
#!/usr/bin/env bash
set -euo pipefail
# -e 出错立即退出
# -u 用到未定义变量就报错
# -o pipefail 管道中任意一步失败即失败
IFS=$'\n\t' # 避免文件名里的空格把循环拆断
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
log() { printf '[%s] %s\n' "$(date '+%H:%M:%S')" "$*"; }
log "开始执行"
# 你的逻辑
log "执行完成"怎么用
任何新写的 .sh 文件都建议这么开头。
使用要点
- 没有 set -e 的脚本,中间失败了还会继续跑,容易产生脏数据。
- 路径一律用绝对路径或 SCRIPT_DIR,不要依赖执行时的工作目录。