问题标签 [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.
cmd - 替换变量作为来自控制台应用程序的 STDOUT 的输入
在我们的发布管道中,我们有一个控制台应用程序,它执行一个生成加密密钥并将其输出到 STDOUT 的功能。我们需要能够在部署期间在变量中使用此值(使用控制台应用程序的结果更新配置文件)。我们已经尝试在 Azure Devops 的命令行任务中使用输出变量选项,但不幸的是,我们需要以不同的格式使用它......而且它似乎没有按预期工作。
例如,我们的命令行工具输出908321093RANDOMLYGENERATEDKEY3422543
到 STDOUT
该键在我们的配置文件中的名称类似于Settings.Security.OurKey
但是命令行任务中的输出变量不允许使用句点 (.),因此设置为SettingsSecurityOurKey
...我们也尝试过 SETTINGS_SECURITY_OURKEY,但变量值永远不会由任务设置。
是否可以以某种方式将 Azure Devops 变量设置为命令行或 powershell 脚本的输出变量的值?就像是:
或者有没有更简单的方法来实现这一点?好像应该没那么难。。
javascript - 字符串中的变量替换
我正在尝试提出一些非常可重用的代码,这些代码将在字符串中查找并执行变量替换。
下面的示例字符串包含$$
对变量的引用。格式为varname.key
.
我希望该subText()
功能可重用。我遇到的问题是repvars
它们本身可能需要替换。代码还没有完成替换示例文本,我要求它repvars.cr
通过调用相同的函数来替换。这似乎通过它关闭。我这么说是因为如果我在作品中分开做。
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}
r - R中的替换加密/解密
使用变量 alpha 和 key,将 ptext 加密为名为 ctext 的变量。使用替换密码
所以我有一个在向量中分隔的文本文件
我还为这个密码创建了一个密钥
现在我的目标是尝试替换与 alpha 相关的键中字母对应的 ptext 向量中的所有字符(例如:alpha 中的 A 与键中的 Z 相关。所以文本中的所有 A 都将替换为一个Z)
我知道我应该匹配 key 中的 alpha
现在我的问题是,ptext 文件中有超过 1000 个字符。我如何能够替换该向量中的所有字母?
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
上面提到的:
aws-codepipeline - AWS CodePipeline 中配置文件的转换/替换
在 Azure 工作了几年后终于进入 AWS。
我为 dotnet 核心 lambda 函数设置了 CodePipeline。
传统上,我设置了构建管道,然后为每个发布阶段转换了配置文件。Azure 在发布管道下有一个内置任务,它将定义的变量替换为你指导它的配置文件中的变量。它还可以进行转换,因为我可以获取 appsettings.release.json 并将其保存为 appsettings.json。
这一切都是在构建后和部署二进制文件之前完成的。
我正在 CodePipeline 中寻找类似的功能。理想情况下,将我的运行时值存储在环境变量或 SecretsManager 中。
bash - 保留 bash 样式变量的简单配置文件模板处理器
我必须在已经包含类似 bash 的语法变量的文本配置文件(yaml、xml、json)上引入一些模板。我需要保留现有的类似 bash 的变量,但要替换我的变量。列表是动态的,变量应该来自环境。类似于采用“$${MY_VAR}}”模式但忽略 $MY_VAR 的简单处理器。最好是纯 Bash 或尽可能少的工具。
模式可以是 $$(VAR) 或任何可以很容易地从 ${VAR} 和 $VAR 中分离出来的东西。关键限制 - 它适用于 docker 容器启动过程,将环境变量注入提供的服务配置模板,并以此方式构建此配置。因此,Java 甚至 Perl 处理之类的东西都不是一种选择。
有人有简单的方法吗?
我正在使用以下 bash 处理进行此类变量替换,其中原始文件没有变量。但现在我需要一些更聪明的东西。
regex - 捕获并替换在两个字符串之间找到的字符串
我正在尝试替换名为s的特定变量的值,variable
但前提是它包含在两个字符串之间,即 betweengroup1
和group2
。(或group1
直到文本结束,如果group2
没有找到)
variable
也可以在和之间找到group2
,group1
但不应该碰!
一张图片胜过一千个字,所以这就是我想要实现的目标:
variable
在蓝色突出显示的区域中找到需要单独匹配。其他variable
需要忽略,保持原样。
我有两个正则表达式,但找不到如何让它们在一个正则表达式中协同工作......
group1(.*?)group2
group1
显示和之间的文本group2
\"variable\":\d{1,2}
显示我需要匹配的变量及其值
我的 JSON 文本是
根据以下来自 toto 的评论,一个有效的正则表达式是(?:"group1"|\G(?!^))(?:(?!"group2"|"variable").)*("variable":\d*)
https://regex101.com/r/5EGTHu/1
但我不明白如何替换variable:xx
为variable:10
任何有关替换/替换的帮助将不胜感激。我尝试了各种输入,但最终只是将文本添加到 $0 或丢失了整个匹配项。
请注意,不幸的是,我必须在这里使用正则表达式,并且不能使用 json 解析器。