首页 > 解决方案 > 检索 shell 脚本退出代码(返回值)

问题描述

尝试验证 Logstash 配置文件。从 Windows 命令行运行以下行时:

C:> C:\Logstash\bin\logstash -t -f C:\Logstash\config\my.config

然后我可以使用检查结果

echo %errorlevel%

在语法错误的情况下返回 1。现在我想在 C# 中以编程方式执行此操作,所以:

using System.Diagnostics;

var logstashProcess = Process.Start(@"C:\Logstash\bin\logstash", @"-t -f C:\Logstash\config\my.config");
logstashProcess.WaitForExit();
return logstashProcess.ExitCode == 0;

问题是它总是返回 true(退出代码为零)——即使配置文件完全搞砸了。

我的猜测:因为C:\Logstash\bin\logstash是一个 shell 脚本,所以我得到的零是 shell 本身成功运行 - 而不是 Logstash 进程(使用 jruby 从该脚本中执行)。关于如何获得真正的回报值的任何想法?批处理文件可以工作吗?(此时我不想在聚会中添加额外的脚本)

标签: c#.netlogstashsh

解决方案


推荐阅读