【问题标题】:Get enviroment variable from string with ash使用 ash 从字符串中获取环境变量
【发布时间】:2016-03-14 18:18:14
【问题描述】:

考虑以下几点:

/ # echo $TEMPLATEGO_SERVICE_HOST
192.168.1.1
/ # export string="TEMPLATEGO_SERVICE_HOST"
/ # echo $string
TEMPLATEGO_SERVICE_HOST

使用 bash 我可以做到:

/ echo ${!string}
192.168.1.1

如果我尝试对 ash 进行相同操作,则会收到以下错误:

/ # echo ${!string}
ash: syntax error: bad substitution

我在一个高山容器中运行,作为一种解决方法,我正在下载 bash 并使用它。但是想避免我的 docker 图像上的额外大小。

【问题讨论】:

    标签: bash environment-variables ash


    【解决方案1】:

    ash 中执行此操作的唯一方法是使用eval。但是,您应该验证您尝试评估的内容是否包含有效的 shell 标识符,以避免从不受信任的值执行意外代码。例如,

    if echo "$string" | grep -q '^[a-zA-Z_][a-zA-Z0-9_]*$' "$string"; then
        eval echo \$$string
    fi
    

    【讨论】:

      猜你喜欢
      • 2016-01-21
      • 1970-01-01
      • 2021-02-17
      • 2011-09-25
      • 2021-03-22
      • 1970-01-01
      • 2017-11-10
      • 2014-08-16
      • 2023-03-29
      相关资源
      最近更新 更多