我有settings.properties文件,其中有许多如下的键值对
browserName=Chrome
ExecutionMode=Local
Am使用settings.properties文件传递输入参数以运行自动化脚本。
示例:例如,当我使用build参数运行jenkins作业时,我以InternetExplorer输入browserName,它应该替换settings.properties文件中的值。
我正在使用以下命令实现目标。
echo browserName=%BROWSER_NAME% >> settings.properties
但是它并没有取代“ browserName = Chrome”,而是在末尾添加了“ browserName = InternetExplorer”。
请让我知道如何替换browserName值?
答案 0 :(得分:1)
您不能使用“ >>”,因为它将数据添加到文件中。如果您使用“>”,它将在插入回显之前清除文件的所有内容。
因此,您必须使用sed命令。我认为您应该运行的命令是这样的:
sh“ sed -i's / browserName =。* / browserName = $ {BROWSER_NAME} / g'settings.properties”
编辑:为Windows添加了两种方法
我发送给您的代码仅适用于Linux。我将让您尝试2种方法:
纯Groovy(对于Windows和Linux):
config = readFile "settings.properties"
newconfig = a.replaceAll("browserName=.*","browserName=${BROWSER_NAME}")
writeFile file: "settings.properties", text: "${newconfig}"
使用Powershell(仅在Windows中)
newconfig=powershell(returnStdout: true, script:"cat settings.properties | %{$_ -replace 'browserName=.*','browserName=${BROWSER_NAME}'}")
writeFile file: "settings.properties", text: "${newconfig}"
注意::我不拥有也不可以访问基于Windows的Jenkins,因此我假设Powershell版本可以使用。我基于这个脚本this博客