【问题标题】:bash replace variable name in string with variable valuebash用变量值替换字符串中的变量名
【发布时间】:2020-08-14 00:45:13
【问题描述】:

这有点奇怪。我有以下字符串:

我有一个名为 REDIRECT 的变量设置为:https://working.${MYDOMAIN}/blah/blah

我需要将 ${MYDOMAIN} 替换为分配给 ${MYDOMAIN} 的变量的实际值。 不确定 bash 或 sed 是否最适合这个。我尝试了 bash replace 但无法让它工作,可能与转义字符或其他东西有关。任何帮助表示赞赏!

【问题讨论】:

  • 这看起来像是 XY 问题,是吗?

标签: bash sed replace


【解决方案1】:

您可以使用这个 bash 替换:

echo "${REDIRECT/\${MYDOMAIN\}/$MYDOMAIN}"

否则,如果您有 envsubst 实用程序,则使用:

export MYDOMAIN
envsubst <<< "$REDIRECT"

【讨论】:

    【解决方案2】:

    只需在 bash 中执行:

    eval REDIRECT=$REDIRECT
    

    【讨论】:

    • 让我们祈祷这个 eval 不会落入坏人之手。好吧,最好不要相信它。
    • eval 往往是不可预测的和不安全的,除非您对正在评估的数据有很好的控制。例如,您的 URL 中是否包含任何 &amp; 字符(即多个参数)?如果是这样,它将被视为单独的 shell 命令之间的分隔符,而不仅仅是字符串的一部分。
    猜你喜欢
    • 1970-01-01
    • 2017-06-21
    • 2020-12-21
    • 1970-01-01
    • 2019-03-28
    • 2014-12-31
    • 2018-04-04
    • 2014-06-12
    • 2011-09-29
    相关资源
    最近更新 更多