问题标签 [variable-substitution]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
295 浏览

cmd - 替换变量作为来自控制台应用程序的 STDOUT 的输入

在我们的发布管道中,我们有一个控制台应用程序,它执行一个生成加密密钥并将其输出到 STDOUT 的功能。我们需要能够在部署期间在变量中使用此值(使用控制台应用程序的结果更新配置文件)。我们已经尝试在 Azure Devops 的命令行任务中使用输出变量选项,但不幸的是,我们需要以不同的格式使用它......而且它似乎没有按预期工作。

例如,我们的命令行工具输出908321093RANDOMLYGENERATEDKEY3422543到 STDOUT

该键在我们的配置文件中的名称类似于Settings.Security.OurKey但是命令行任务中的输出变量不允许使用句点 (.),因此设置为SettingsSecurityOurKey...我们也尝试过 SETTINGS_SECURITY_OURKEY,但变量值永远不会由任务设置。

是否可以以某种方式将 Azure Devops 变量设置为命令行或 powershell 脚本的输出变量的值?就像是:

或者有没有更简单的方法来实现这一点?好像应该没那么难。。

0 投票
2 回答
103 浏览

javascript - 字符串中的变量替换

我正在尝试提出一些非常可重用的代码,这些代码将在字符串中查找并执行变量替换。

下面的示例字符串包含$$对变量的引用。格式为varname.key.

我希望该subText()功能可重用。我遇到的问题是repvars它们本身可能需要替换。代码还没有完成替换示例文本,我要求它repvars.cr通过调用相同的函数来替换。这似乎通过它关闭。我这么说是因为如果我在作品中分开做。

0 投票
1 回答
1095 浏览

docker - docker-compose 变量替换强制变量

我有一个 docker-compose 文件,它使用变量替换一些秘密,如果它们没有提供或为空,我想得到一个错误,为此我尝试了这个:

但是,它给了我错误:

错误:服务“myservice”中“环境”选项的插值格式无效:“JAVA_OPTS= -DMYSQL_USER=${MYSQL_USER:?MYSQL_USER_NOT_SET}...

根据https://docs.docker.com/compose/compose-file/#variable-substitution这应该可以工作,因为它有这个片段:

同样,以下语法允许您指定强制变量:

如果 VARIABLE 在环境中未设置或为空,则 ${VARIABLE:?err} 退出并显示包含 err 的错误消息。如果在环境中未设置 VARIABLE,则 ${VARIABLE?err} 退出并显示包含 err 的错误消息。

我的 docker-compose 中也有version: "3.4",所以这不应该是问题。

已经尝试过,${MY_VAR?MY_ERROR}但它也不起作用。我什至查看了源代码,但没有发现任何帮助。

编辑 :

我试图进行最小尺寸的复制:

码头工人-compose.yml

docker-compose up

错误:服务“hello”中“环境”选项的插值格式无效:“TEST=${TEST?err}

0 投票
2 回答
269 浏览

r - R中的替换加密/解密

使用变量 alpha 和 key,将 ptext 加密为名为 ctext 的变量。使用替换密码

所以我有一个在向量中分隔的文本文件

我还为这个密码创建了一个密钥

现在我的目标是尝试替换与 alpha 相关的键中字母对应的 ptext 向量中的所有字符(例如:alpha 中的 A 与键中的 Z 相关。所以文本中的所有 A 都将替换为一个Z)

我知道我应该匹配 key 中的 alpha

现在我的问题是,ptext 文件中有超过 1000 个字符。我如何能够替换该向量中的所有字母?

0 投票
2 回答
6748 浏览

azure - Azure Devops 发布管道 XML 变量替换不起作用

我的发布管道中有一个非常简单的变量替换,但它不起作用。我在connectionStrings.config文件中有这样的变量:

然后我在发布管道中定义了变量:

在此处输入图像描述

我还在XML Variable Substitution部署任务中启用了:

在此处输入图像描述

但我运行版本,变量没有被替换。我在日志中收到此消息:

这应该很简单,所以不确定我缺少什么设置。帮助!

0 投票
0 回答
453 浏览

asp.net - KeyVault --> Azure Pipeline --> XML 变量替换在末尾添加了额外的单引号,这会破坏连接字符串

我之前在这里问过如何使用 Azure KeyVault 进行变量替换,并且能够让它大部分工作,除了最后一个问题。由于某种未知的原因,替换完美地发生了,但它在末尾添加了一个额外的单引号。由于这些是 web.config 中的连接字符串,因此额外的单引号会破坏它。我不知道是什么添加了额外的单引号。我做了四次检查 KeyVault 以确保它没有错字。FileTransform@2我已经尝试按照我上一个问题的答案所推荐的IISWebAppDeploymentOnMachineGroup@0任务以及XmlVariableSubstitution设置为 true的任务进行 XML 变量替换。两者都添加了额外的单引号

管道运行之前的 web.config 示例(这是签入 Git 的内容):

在管道完成 XML 变量替换后

如您所见,它正确连接到 Azure KeyVault,获取值并进行替换。就是“ThePassword;”后面的那个额外的单引号;这使得应用程序无法解析连接字符串。

这是我的管道片段:

我也尝试设置XmlVariableSubstitution为 false 并使用FileTransform@2上面提到的:

0 投票
0 回答
55 浏览

aws-codepipeline - AWS CodePipeline 中配置文件的转换/替换

在 Azure 工作了几年后终于进入 AWS。

我为 dotnet 核心 lambda 函数设置了 CodePipeline。

传统上,我设置了构建管道,然后为每个发布阶段转换了配置文件。Azure 在发布管道下有一个内置任务,它将定义的变量替换为你指导它的配置文件中的变量。它还可以进行转换,因为我可以获取 appsettings.release.json 并将其保存为 appsettings.json。

这一切都是在构建后和部署二进制文件之前完成的。

我正在 CodePipeline 中寻找类似的功能。理想情况下,将我的运行时值存储在环境变量或 SecretsManager 中。

0 投票
1 回答
54 浏览

bash - 保留 bash 样式变量的简单配置文件模板处理器

我必须在已经包含类似 bash 的语法变量的文本配置文件(yaml、xml、json)上引入一些模板。我需要保留现有的类似 bash 的变量,但要替换我的变量。列表是动态的,变量应该来自环境。类似于采用“$${MY_VAR}}”模式但忽略 $MY_VAR 的简单处理器。最好是纯 Bash 或尽可能少的工具。

模式可以是 $$(VAR) 或任何可以很容易地从 ${VAR} 和 $VAR 中分离出来的东西。关键限制 - 它适用于 docker 容器启动过程,将环境变量注入提供的服务配置模板,并以此方式构建此配置。因此,Java 甚至 Perl 处理之类的东西都不是一种选择。

有人有简单的方法吗?

我正在使用以下 bash 处理进行此类变量替换,其中原始文件没有变量。但现在我需要一些更聪明的东西。

0 投票
1 回答
893 浏览

azure-devops - 在 Azure DevOps 中同时选择 Xml 转换和变量替换时不起作用

我一直在研究构建和发布管道一段时间,但最近遇到了这个问题

我正在.net 应用程序上执行配置转换。我遇到的问题有点奇怪.. 如果也启用了 xml 转换,则变量替换不起作用,但仅在启用变量替换时才起作用。我不知道这是可能的,因为在 XML 转换完成后变量替换会起作用。我想同时使用这两个选项。就像我想转换现有的配置文件,然后用管道变量和变量组替换剩余的值。这样我就可以减少其他团队的参与来实现所有价值观的转变,因为我有时间紧迫感。最终会改变一切,但现在我想遵循上述方法。日志确实说 Xml 转换和变量替换成功完成,但变量替换没有

我错过了一些非常愚蠢的东西吗?有没有人遇到过这种问题。

在此处输入图像描述

0 投票
1 回答
51 浏览

regex - 捕获并替换在两个字符串之间找到的字符串

我正在尝试替换名为s的特定变量的值,variable但前提是它包含在两个字符串之间,即 betweengroup1group2。(或group1直到文本结束,如果group2没有找到)

variable也可以在和之间找到group2group1应该碰!

一张图片胜过一千个字,所以这就是我想要实现的目标: variable在蓝色突出显示的区域中找到需要单独匹配。其他variable需要忽略,保持原样。 在此处输入图像描述

我有两个正则表达式,但找不到如何让它们在一个正则表达式中协同工作......

  • group1(.*?)group2group1显示和之间的文本group2
  • \"variable\":\d{1,2}显示我需要匹配的变量及其值

我的 JSON 文本是

根据以下来自 toto 的评论,一个有效的正则表达式是(?:"group1"|\G(?!^))(?:(?!"group2"|"variable").)*("variable":\d*) https://regex101.com/r/5EGTHu/1 但我不明白如何替换variable:xxvariable:10

任何有关替换/替换的帮助将不胜感激。我尝试了各种输入,但最终只是将文本添加到 $0 或丢失了整个匹配项。

请注意,不幸的是,我必须在这里使用正则表达式,并且不能使用 json 解析器。