繁体   English   中英

Bash - 解析 bash function 中的环境变量

Bash - Parse environment variables in bash function

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个 bash function 从.env文件中检索环境变量。

在我的.env文件中,我有以下变量

USER=luis
IMAGE_NAME=application
IMAGE_VERSION=latest
IMAGE_TAG=${USER}/${IMAGE_NAME}:${IMAGE_VERSION}

在我的 bash 脚本中,我有我的环境 function

function dotenv::get() {
  variable=$(grep ^"${1}"= "$(pwd)/.env" | xargs)
  IFS="=" read -ra variable <<< "${variable}"

  echo "${variable[1]}"
}

当我执行dotenv::get IMAGE_TAG时。

预期结果: luis/application:latest

当前结果: ${USER}/${IMAGE_NAME}:${IMAGE_VERSION}

我知道我的 function 不完整,但是我不确定实现我的目标的下一步是什么。

2 个回复

该文件看起来想要保留 shell-ish 语法。 如果是这样,只需source它:

. ./.env
echo "$IMAGE_TAG"

dotenv::get() { 
    . ./.env;
    echo "${!1}"
}

如果这不是您的意图,则使用${...}变量替换已设置变量的文件实现整个变量解析器。

您仍然缺少两件事:解释您的变量分配,并解释您查询的变量的内容:

. $(pwd)/.env  # source the environment file so that variables are assigned

function dotenv::get() {
  variable=$(grep ^"${1}"= "$(pwd)/.env" | xargs)
  IFS="=" read -ra variable <<< "${variable}"

  eval X=${variable[1]}  # interpret the expression containing variables
  echo $X
}

dotenv::get IMAGE_TAG
2 如何完全解析 bash/shell 脚本中的环境变量 [重复]

这个问题在这里已经有了答案: Bash - 变量变量[重复] (4个答案)Bash 中的动态变量名称17 个答案 从键/值对文件中设置环境变量39 个答案去年关闭。 这是场景: 系统预设有以下环境变量: 现在我有了文件: values.properties 我还有一个名为: run.sh的 sh ...

3 在本地bash函数变量中为脚本设置环境变量

我有一个Unix bash函数,该函数执行解析自定义环境变量的脚本。 我想避免在bash中导出相关变量,而只将其设置为脚本,作为执行命令的一部分。 如果我直接在命令中设置变量-例如VARNAME=VARVAL script_name则效果很好。 但是,由于我想根据不同的条件设置多个变量 ...

6 使用Bash在Cron Job中的环境变量

通常,当我需要在Cron作业中使用环境变量时,只需在cron选项卡中声明它们即可。 但是,我正在无法直接访问cron选项卡的服务器上工作。 有人告诉我可以使用bash脚本设置cron作业的变量。 我对bash不太熟悉,我不太确定命令的流程是什么。 我的Cron工作每周要执行一次Php ...

8 Bash替换命令中的环境变量

我正在尝试使用AppVeyor中的环境变量中定义的密码向GitHub进行身份验证。 我尝试执行的命令是: 在上述情况下,我希望将$EnvPassword替换为环境变量中定义的密码。 我以为前缀加上$就足够了,但是根本不起作用。 我似乎在网上其他任何地方都找不到任何东西。 ...

9 在VSCode中配置bash环境变量

到目前为止,我几乎已经有了使用GIT(Windows)所需的设置。 在Git bash上使用SSH,Passphrase,SSH配置文件和SSH-Agent都可以正常工作。 但是,如果我通过运行“代码”从GitBash终端启动Visual Studio,则只能与任何远程仓库进行通信。 ...

10 在bash脚本中访问环境变量

我有一个bash脚本,试图在其中使用某些环境变量的值。 这些变量已定义-如果运行printenv我会看到键和值。 同样,在〜/ .bash_profile和〜/ .bashrc中都定义和导出了这些变量,就像export FOO="bar"一样。 我试图通过./script-name执行脚本,但无 ...

2020-08-04 07:28:13 1 42   bash
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM