有些脚本会生成一堆中间文件,直接塞当前目录容易互相踩,也不好清理。简单一点可以每次启动时用 mktemp -d 建一个独立工作目录,退出时统一删掉。
环境:Linux/macOS,Bash 4.4+,只用常见命令。保存为 tmp-workdir-demo.sh:
#!/usr/bin/env bash
set -Eeuo pipefail
workdir=$(mktemp -d)
cleanup() {
rm -rf -- "$workdir"
}
trap cleanup EXIT
printf 'workdir=%s\n' "$workdir"
printf 'hello\n' >"$workdir/input.txt"
tr '[:lower:]' '[:upper:]' <"$workdir/input.txt" >"$workdir/output.txt"
cat "$workdir/output.txt"
跑一下:
chmod +x tmp-workdir-demo.sh
./tmp-workdir-demo.sh
小细节是变量引用都带上引号,删除时也加 --。如果脚本会在失败时保留现场排查,可以把 cleanup 改成判断一个环境变量,比如 KEEP_TMP=1 时只打印目录不删除。