Shell 脚本参数处理小记
Shell 脚本写起来很快,但也容易因为参数为空、路径有空格或命令失败后继续执行而出问题。尤其是部署和清理类脚本,开头几行的保护很重要。
参数检查
#!/usr/bin/env bash
set -euo pipefail
target="${1:-}"
if [ -z "$target" ]; then
echo "usage: $0 "
exit 1
fi
给参数设置默认值,再明确判断是否为空,可以避免未绑定变量造成的意外退出,也能给使用者更清楚的提示。
路径要加引号
变量引用尽量加双引号,特别是文件路径和用户输入。很多脚本在测试目录能跑,换到带空格的路径就失败,通常就是这个原因。
mkdir -p "$target" cp "$source_file" "$target/"
脚本越短越应该写清楚失败条件。这样几个月后再回来用,也能快速知道它会做什么。