如何在/bin/sh环境中检查环境变量是否已设置?求替代bash的命令
在/bin/sh中检查环境变量是否已设置的可行命令
bash的[[ -v ]]语法是bash专属扩展,/bin/sh作为POSIX标准shell不支持该语法。以下是两种符合POSIX标准、适用于/bin/sh的检查方式:
检查变量是否已设置(无论值是否为空):
使用POSIX参数扩展${VAR+word}实现,当变量已设置时会替换为指定的word,未设置则为空。结合[ -n ]判断非空:if [ -n "${PROXY_PASS_MAPPING+set}" ]; then echo "set"; fi区分变量已设置且非空、已设置为空、未设置三种情况:
利用${VAR:-}扩展(未设置时返回空),结合[ -z ]判断:if [ -z "${PROXY_PASS_MAPPING:-}" ]; then if [ -z "${PROXY_PASS_MAPPING+set}" ]; then echo "未设置" else echo "已设置但为空" fi else echo "已设置且非空" fi
内容的提问来源于stack exchange,提问作者kumar
相关产品推荐
相关产品推荐

