写 shell 小脚本时,如果要放中间文件,直接用 /tmp/demo 这种固定名字有点容易撞。mktemp -d 会生成一个新的临时目录,配合 trap 清理还挺省心。
环境:bash 4+,Linux/macOS 一般都有。保存成 tmpdir-demo.sh:
#!/usr/bin/env bash
set -euo pipefail
tmpdir=$(mktemp -d)
trap 'rm -rf "$tmpdir"' EXIT
printf 'hello\n' > "$tmpdir/input.txt"
tr a-z A-Z < "$tmpdir/input.txt" > "$tmpdir/output.txt"
cat "$tmpdir/output.txt"
跑一下:
bash tmpdir-demo.sh
输出应该是:
HELLO
这个适合那种临时拼文件、解压、生成中间结果的小脚本。注意 trap 里的变量要加引号,不然路径里有奇怪字符时容易翻车。