Filip Roséen 在这篇文章中深入探索了 Shell 中 :(空命令)的强大用法。结合参数展开(parameter expansion)语法,一行 : "${1:?missing argument}" 可以替代四行传统的 if 检查来验证必需参数。文章还展示了更多用法:用 := 设置默认值、用 : > file 截断文件、用 : < file 检测文件可读性,以及用 trap : INT 优雅忽略信号。这些技巧源自 1971 年的 Thompson Shell,至今依然在 POSIX 标准中有着广泛应用。
: 是 POSIX 内建命令,只评估参数并丢弃结果,可替代传统 if 语句进行参数检查。${var:?msg} 在变量为空时输出错误信息并退出脚本,与 : 组合实现极简参数校验。:=:: "${DATA_DIR:=/var/data}" 一行即可为变量赋予默认值,无需单独赋值语句。: > file 可清空文件内容,: >> file 可检测文件是否可写。trap : INT 可优雅忽略中断信号,在需要命令的上下文中充当占位符。