【问题标题】:bash export all environment variable with certain prefix to folderbash将具有特定前缀的所有环境变量导出到文件夹
【发布时间】:2020-12-05 21:50:50
【问题描述】:

我正在 gitlab 中处理我的 cicd。

我设置了很多环境变量,其中大部分是标准的字符串/数字。我所做的是在它们前面加上“APP_”,这样我就可以在 cicd 期间仅将所需的变量正确导出到我的项目中。我是这样做的:

export | grep APP_ | sed -e 's/APP_//g' | sed -e 's/declare -x //g' > ./app/settings/.env

这基本上会将所有环境变量与 APP_,删除 APP_,并将它们全部存储在 ./app/settings/.env 的文件中

这就像一个魅力

现在我想为我的文件环境变量做一些类似的事情。我所做的是使用“FILE_”前缀创建,所以我想:

  • 为每个以“FILE_”开头的环境变量创建一个文件,将该文件命名为环境变量名称(但不带前缀 FILE_)
  • 将文件存储在 .app/settings/files 中

我应该怎么做?

目前我正在一件一件做,但这不是我想要的:

echo "$FILE_MY_CERTIFICATE" > "./app/settings/files/my_certificate"

附:对于那些 gitlab 环境变量方面的专家,我这样做是因为我无法使用 gitlab 中集成的标准“文件”环境变量功能。这些变量不在我的构建项目中,所以我想找到一种解决方法来满足我的需求。

【问题讨论】:

  • I'm unable to use the standard "file" environement variable feature integrated in gitlab 什么是“标准文件环境变量功能”?请解释。你真正想做什么?

标签: bash shell continuous-integration gitlab


【解决方案1】:

我是这样做的:

忘记您的代码。只是:

declare -p "${!APP_@}" > ./app/settings/.env

如果您真的特别想要真正解析export 之类的内容,请使用env -0

我应该怎么做?

declare -p "${!FILE_@}" > ./app/settings/files

我认为这可能是一个 XY 问题,您应该重新考虑您的算法以改用数组或关联数组。

【讨论】:

  • "${!APP_@}" 的一个问题是它也包含局部变量(未导出)。
  • 它不起作用。 declare -p "${!APP_@}" > ./app/settings/.env 只导出带有 APP_ 的变量,但不会从变量名中删除 APP_。此外,它会在 python dotenv 不知道解析的每一行中添加一个“declare -x”......它只能用前导“export”或什么都不解析,而不是“declare -x”来解析它不起作用的文件因为它试图创建一个文件“文件”,而我想在文件夹“文件”中为所有以 FILE_ 作为前缀的环境变量创建文件。
猜你喜欢
  • 1970-01-01
  • 2019-12-02
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 2021-12-11
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多