PowerShell中交易清单变量无法被环境变量替换问题求助
解决resim交易清单环境变量未替换的问题
PowerShell不会主动替换manifest文件内容里的${xxx}变量,得手动处理,给你几个可行方案:
预处理manifest内容再运行
用PowerShell读取文件并替换变量后,直接通过标准输入传给resim:$content = Get-Content -Path ./your_manifest.rtm -Raw $content = $content -replace '\${my_account}', $env:my_account $content | resim run -这里
-Raw确保把整个manifest读成单字符串,\${my_account}里的反斜杠是转义正则里的$,避免匹配行尾。用resim内置变量传递(如果版本支持)
部分resim版本支持通过命令行参数直接设置变量,查下resim run --help看有没有--set-var这类选项,有的话可以这么用:resim run ./your_manifest.rtm --set-var my_account=$env:my_account生成临时替换后的文件
先把替换好的内容存到临时文件再运行:$content = Get-Content -Path ./your_manifest.rtm -Raw $content -replace '\${my_account}', $env:my_account | Out-File ./temp_manifest.rtm resim run ./temp_manifest.rtm # 用完可以删掉临时文件 Remove-Item ./temp_manifest.rtm
为啥原来的方式不行?因为PowerShell只解析命令行里直接写的变量,不会自动去读取文件内容并替换里面的${}标记,必须主动做替换操作才行。
内容的提问来源于stack exchange,提问作者Clement
相关产品推荐
相关产品推荐

