测试以查看是否在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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |