【问题标题】:How to echo string with variable substitution in bash? [duplicate]如何在bash中使用变量替换来回显字符串? [复制]
【发布时间】:2019-09-16 19:36:10
【问题描述】:

我有一个类似${REPOSITORY}/company/api:${API_VERSION} 的字符串。 $REPOSITORY$API_VERSION 是 shell 变量。

$ echo ${DATA_API_VERSION}
latest
$ echo ${REPOSITORY}
com.company.repo

我想获取显示这些变量值的插值字符串并将其分配给另一个变量。

这是我得到的:

$ echo "$image"
${REPOSITORY}/company/api:${API_VERSION}

我想要这个:

com.company.repo/company/api:latest

【问题讨论】:

  • 检查您是否使用了双引号:image="${REPOSITORY}/company/api:${API_VERSION}"。我复制了你的例子,得到了你想要的结果。

标签: bash


【解决方案1】:

您可以使用sed 来搜索和替换这两个变量。

#!/bin/bash

DATA_API_VERSION="latest"
REPOSITORY="com.company.repo"

image='${REPOSITORY}/company/api:${DATA_API_VERSION}'
sed -e "
    s/\${REPOSITORY}/$REPOSITORY/g
    s/\${DATA_API_VERSION}/$DATA_API_VERSION/g
" <<< "$image"

【讨论】:

  • 请注意,如果变量包含斜杠、换行符或其他特殊字符,则会出现问题。
猜你喜欢
  • 2020-12-21
  • 2021-01-27
  • 1970-01-01
  • 1970-01-01
  • 2020-08-14
  • 2016-09-13
  • 1970-01-01
  • 2011-10-23
  • 1970-01-01
相关资源
最近更新 更多