案件
我正在使用部署软件产品工作量在 Windows 工作站上。我需要禁用产品错误的自动更新,在这种情况下,最好的解决方案是使用以下正则表达式修改一个配置文件:s/<value>.*<\/value>/<value>file:\\\\<\/value>/g
问题
为了执行所描述的任务,我使用 SED:
%BASH%\sed "s/<value>.*<\/value>/<value>file:\\\\<\/value>/g" "MyApp.config" > "MyApp.config.tmp"`
每当我从命令行执行此操作时,它都有效。
但是一旦我将其粘贴到 Wpkg 中(<>
由于XML
限制而转义):
<install cmd='%BASH%\sed "s/<value>.*<\/value>/<value>file:\\\\<\/value>/g" "%PKG_DESTINATION%\MyApp.config" > "%PKG_DESTINATION%\MyApp.config.tmp"' />
...失败了,没有创建新文件并且...返回神秘的错误代码 2:
Exit code returned non-successful value (2) on command '%BASH%\sed "s/<value>.*<
\/value>/<value>file:\\\\<\/value>/g" "%PKG_DESTINATION%\MyApp.config" > "%PKG_D
ESTINATION%\MyApp.config.tmp"'.
问题
在无谓地搜索了 1 个半小时寻找神秘错误代码 2 之后,我开始相信要么是我与 Google 的关系出了问题,要么是真的没有针对该错误的文档。官方手册也让我失明了。
我试图stderr
将该 Wpkg 命令转储到文本文件,但该文件尚未创建,这表明无法stderr
转储。
也许第二双或第三双眼睛能帮助我找到问题的根源?
答案1
显然,错误 2 不是由命令返回的sed
,而是由 Wpkg 无法找到%BASH%\sed.exe
文件返回的:)