标签: envsubst

envsubst有逃脱角色吗?

有没有办法防止envsubst替代$VARIABLE?例如,我希望有类似的东西:

export THIS=THAT
echo "dont substitute \\\$THIS" | envsubst
Run Code Online (Sandbox Code Playgroud)

并让它回来

dont substitute $THIS
Run Code Online (Sandbox Code Playgroud)

但我得到了

dont substitute \THAT
Run Code Online (Sandbox Code Playgroud)

这样做有什么逃避特征吗?

bash shell envsubst

35
推荐指数
6
解决办法
1万
查看次数

无法在 GitLab 环境变量中使用 `$$` 字符

$$无法在 GitLab CI 的环境变量中使用字符。

我将我的秘密存储在 GitLab CI 环境变量中,其中我的密码字符串之一末尾有 $$ 字符(例如:Ab1ab$$)。当我回显它或使用 envsubst 时,输出将为 Ab1ab$,去掉末尾多余的 $。

我尝试用 '',"" 将字符串包围起来,但没有任何帮助。在 gitlab 社区上看到了一些关于环境变量中 $ 字符使用的担忧,但找不到针对我的确切问题的任何解决方法。

https://gitlab.com/gitlab-org/gitlab-ce/issues/27436

导出 VAR= 'Ab1ab$$' 回显 $VAR=Ab1ab$

environment-variables gitlab gitlab-ci envsubst

6
推荐指数
1
解决办法
4505
查看次数

为什么我的 envsubst 命令只插入空白字符串?

我正在尝试运行命令envsubst < myfile来替换环境变量,但它们不是被它们的值替换,而是被替换为空白字符串。

这是我的示例命令(为了清楚起见,分成单独的行):

SIGNOFF="Goodbye"
&&
printf "\nOkay, \$SIGNOFF has been set to \"$SIGNOFF\"\n\nOriginal contents:\n\n"
&&
cat test.conf
&&
printf "\n\nContents after envsubst < test.conf\n\n"
&&
envsubst < test.conf | cat
&&
printf "\n\n"
Run Code Online (Sandbox Code Playgroud)

这是我的结果:

$ SIGNOFF="Goodbye" && printf "\nOkay, \$SIGNOFF has been set to \"$SIGNOFF\"\n\nOriginal contents:\n\n" && cat test.conf && printf "\n\nContents after envsubst < test.conf\n\n" && envsubst < test.conf | cat && printf "\n\n"

Okay, $SIGNOFF has been set to "Goodbye"

Original contents:

Hello world, let's …
Run Code Online (Sandbox Code Playgroud)

unix linux bash envsubst

4
推荐指数
1
解决办法
2773
查看次数

kubectl apply-ing时替换所有文件中的环境变量

假设我们在一个文件夹中有许多 Kubernetes 配置文件kubernetes,我们希望将它们全部应用:

kubectl apply -f kubernetes -n MyNamespace
Run Code Online (Sandbox Code Playgroud)

其中一些文件包含需要首先替换的环境变量(在 Kubernetes 中没有模板)。例如,一些部署 yaml 包含以下内容:

image: myregistry.com/myrepo:$TAG
Run Code Online (Sandbox Code Playgroud)

对于单个 yaml 文件,这可以通过使用 envsubst来完成,例如:

envsubst < deploy.yml | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)

对所有 yaml 文件进行这些替换的最佳方法是什么?

(循环文件夹中的文件并按envsubst上述方式调用是一种选择,但我怀疑最好将整个文件夹传递给kubectl而不是单个文件)

bash kubernetes kubectl envsubst

3
推荐指数
2
解决办法
654
查看次数

通过 bash 脚本中的引用更新变量?

是否可以像在 C++ 中那样在bash 脚本通过引用来使用变量?

假设我有一个如下所示的脚本:

#!/bin/bash

A="say"
B=$A
echo "B is $B"
A="say it"
echo "B is $B" # This does not get the new value of A but is it possible to using some trick?
Run Code Online (Sandbox Code Playgroud)

即使 的值已从 更改为,您也会在上面的脚本echo "B is $B输出中看到。我知道重新分配喜欢会解决它。但我想知道是否有可能持有对的引用,以便在更新后立即更新它的值。这发生在没有重新分配的情况下。这可能吗?B is sayAsaysay itB=$ABABAB=$A

envsubstBash 中的 Lazy Evaluation 中读到了。是按照方法去做吗?

A="say"
B=$A
echo "B is $B"
envsubst A="say it"
echo …
Run Code Online (Sandbox Code Playgroud)

bash envsubst

1
推荐指数
1
解决办法
62
查看次数