案件

案件

案件

我正在尝试将指定文件中<value>*</value>的所有出现的替换为。<value>file:\\</value>test.txt

我在 Windows 上工作并使用sed已安装的 Win-32 编译的 bash 实用程序集。

我使用以下命令:

sed -n "s/<value>.*<\/value>/<value>file:\\\\<\/value>/g" "test.txt" > "test.txt.new"

我想将此命令作为工作量脚本。

问题

当我从命令行使用此命令时,一切都正常运行。

但是当我通过这个命令时工作量脚本:

<install cmd='%BASH%\sed -n "s/&lt;value&gt;.*&lt;\/value&gt;/&lt;value&gt;file:\\\\&lt;\/value&gt;/g;" test.txt" > "test.txt new"' />

...然后我得到的是:

Exit code returned non-successful value (2) on command '%BASH%\sed -n "s/<value>
.*<\/value>/<value>file:\\\\<\/value>/g;" "test.txt" > "test.txt.new"'.

以上意味着sed应用程序返回退出代码 2。此外,新文件尚未创建。

我在 Google 上浏览了很长时间,令我惊讶的是,sed文档似乎很差。我没有找到有关此退出代码的文档。

问题

有谁知道吗退出代码 2 是什么意思意思是sed

...或者有其他解决方案?

(必须是无人看管,肯定可能会使用常见的 bash 工具)

答案1

我不确定您的问题出在sed。 %BASH% 是否应该评估可执行文件所在的目录?sed您是否确认它确实如此?因为我的预期是(如果在 Windows 上定义)%BASH% 将评估可执行文件bash本身的路径,在这种情况下在其上附加“\sed”是没有意义的。

我特别要注意的是,DOS 错误代码 2 是“未找到文件”——也许是查找文件“%BASH%\sed”存在问题?

答案2

sed 是否发出退出代码?

大多数 sed 版本都没有此功能,但请检查您所使用的版本附带的文档。如果程序正常终止,GNU sed 将发出退出代码 0;如果脚本中有错误,则发出 1;2 如果脚本执行过程中出现错误

来源SED 常见问题解答

相关内容