加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

测试以查看是否在bash中设置了env变量

发布时间:2020-12-16 01:46:15 所属栏目:安全 来源:网络整理
导读:在bash脚本中,我试图测试变量的存在.但无论我做什么,我的“if”测试都会返回true.这是代码: ignored-deps-are-not-set () { if [ -z "${ignored_deps+x}" ] then return 0 fi return 1}ignored_deps=1ignored-deps-are-not-setecho "ignored-deps function
在bash脚本中,我试图测试变量的存在.但无论我做什么,我的“if”测试都会返回true.这是代码:

ignored-deps-are-not-set () {
    if [ -z "${ignored_deps+x}" ]
    then
        return 0
    fi
    return 1
}

ignored_deps=1
ignored-deps-are-not-set
echo "ignored-deps function returns: $?"
if [ ignored-deps-are-not-set ]
then
    echo "variable is unset"
else
    echo "variable exists"
fi

这是写的输出:

ignored-deps function returns: 1
variable is unset

当我注释掉设置了ignored_deps的行时的输出.

ignored-deps function returns: 0
variable is unset

无论怎样,它都说这个变量没有设置.我错过了什么?

解决方法

这一行:

if [ ignored-deps-are-not-set ]

测试字符串’ignored-deps-not-set-set’是否为空.它返回true,因为该字符串不为空.它不执行命令(因此也不执行函数).

如果要测试是否设置了变量,请使用${variable:xxxx}表示法之一.

if [ ${ignored_deps+x} ]
then echo "ignored_deps is set ($ignored_deps)"
else echo "ignored_deps is not set"
fi

如果设置了$ignored_deps,${ignored_deps x}表示法将计算为x,即使它被设置为空字符串也是如此.如果您只想将它??设置为非空值,那么也使用冒号:

if [ ${ignored_deps:+x} ]
then echo "ignored_deps is set ($ignored_deps)"
else echo "ignored_deps is not set or is empty"
fi

如果要执行该函数(假设破折号在函数名中起作用),则:

if ignored-deps-are-not-set
then echo "Function returned a zero (success) status"
else echo "Function returned a non-zero (failure) status"
fi

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读