在一个bash脚本中,我想测试一个变量是否存在。但是无论我做什么,我的“if”测试都返回真。以下是代码:
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 function returns: 0
variable is unset
无论如何,它都说变量未设置。我错过了什么吗?
/bin/sh
拒绝函数名称,但/bin/bash
接受它,包括破折号。由于常规命令可以在名称中使用破折号,因此允许bash也是有道理的;尽管这可能不是POSIX标准所要求的。 - Jonathan Leffler