如果变量不存在,我将尝试通过脚本创建环境变量。
我为此所做的是:
local env_variable_name="VARIABLE_"$id
if [[ -z "${env_variable_name}" ]]; then
break
else
local env_var_value=$(generate_value $some_argument)
export "$env_variable_name"="${env_var_value}"
fi
我的目标是创建一个环境变量,我可以为它选择自己的动态名称。如果再次激发脚本,我希望防止脚本覆盖最初设置的值。
如果我用";源";它按预期工作。我设置并持久化的环境变量。如果我再次运行该脚本,环境变量的值将被覆盖。正确的方法是根据环境变量的名称来检查它是否存在,但如果不知道变量的名称并将其硬编码到脚本中,我就找不到这样做的方法。
关于这一点,我找到了正确的解决方案:https://stackoverflow.com/a/35412000/10781626
正确的代码如下-我需要更改if语句:
local env_variable_name="VARIABLE_"$id
if (declare -p "${env_variable_name}" &>/dev/null); then
break
else
local env_var_value=$(generate_value $some_argument)
export "$env_variable_name"="${env_var_value}"
fi
如果已经设置了带有传递名称的变量,则declare命令将返回成功,这将导致正确调用if部分!