在 CentOS 里判断“环境是否存在”,常见有几种理解,下面按最常用场景给你总结,直接对照用即可。
if [ -z "${VAR_NAME+x}" ]; then
echo "环境变量不存在"
else
echo "环境变量存在"
fi
说明:
${VAR_NAME+x}
[ -v VAR_NAME ] && echo "存在" || echo "不存在"
⚠️ 注意:
-v只在 bash 4.2+ 支持,CentOS 7 默认 bash 是支持的。
if [ -z "$VAR_NAME" ]; then
echo "不存在"
fi
原因:
变量存在但值为空时,也会被误判为“不存在”。
if command -v python3 &>/dev/null; then
echo "python3 存在"
else
echo "python3 不存在"
fi
或者:
which python3 &>/dev/null && echo "存在" || echo "不存在"
✅ command -v 更推荐(更安全、POSIX 兼容)
rpm -q nginx
或脚本中:
if rpm -q nginx &>/dev/null; then
echo "nginx 已安装"
else
echo "nginx 未安装"
fi
yum list installed | grep nginx
或:
dnf list installed | grep nginx
[ -d /opt/app ] && echo "目录存在"
[ -f /etc/app.conf ] && echo "文件存在"
| 场景 | 判断方式 |
|---|---|
| 环境变量是否存在 | [ -z "${VAR+x}" ] |
| 命令是否存在 | command -v cmd |
| 软件是否安装 | rpm -q pkg |
| 文件是否存在 | -f |
| 目录是否存在 | -d |
如果你说的 “env” 是指:
可以直接告诉我具体场景,我可以给你更精准的判断方法 ✅