【问题标题】:How can i check if a variable exists by name [duplicate]如何检查名称是否存在变量[重复]
【发布时间】:2020-12-15 12:47:21
【问题描述】:

如果变量不存在,我正在尝试通过脚本创建环境变量。

我正在为此做的事情如下:

    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

我的目标是创建一个环境变量,我可以为其选择自己的动态名称。如果再次触发脚本,我想防止脚本覆盖最初设置的值。

如果我使用“源”运行脚本,它会按预期工作。我设置并保留的环境变量。如果我再次运行脚本,环境变量的值将被覆盖。正确的方法是通过名称检查环境变量是否存在,但我无法在不知道变量名称如何将其硬编码到脚本中的情况下找到一种方法。

【问题讨论】:

标签: bash shell environment-variables


【解决方案1】:

对此我找到了正确的解决方案: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

如果已设置具有传递名称的变量,则声明命令返回成功,这将导致 if 部分的正确调用!

【讨论】:

    猜你喜欢
    • 2018-08-13
    • 2014-01-20
    • 2020-04-30
    • 2014-04-20
    • 2010-10-25
    • 2015-06-10
    • 1970-01-01
    • 2017-12-15
    相关资源
    最近更新 更多