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,不要依賴執行時的工作目錄。