如何从C#执行cygwin命令并保持其打开状态?

如何从C#执行cygwin命令并保持其打开状态?,c#,cygwin,windows-console,C#,Cygwin,Windows Console,我正试图通过bash从C#运行一个cygwin命令,并尝试使用read命令打开结果。我的代码似乎正在打开bash,然后立即关闭。我做错了什么 static void Main(string[] args) { Process bashProcess = new Process(); bashProcess.StartInfo.FileName = @"C:\cygwin64\bin\bash.exe"; bashProcess.StartInfo.Arguments =

我正试图通过bash从C#运行一个cygwin命令,并尝试使用read命令打开结果。我的代码似乎正在打开bash,然后立即关闭。我做错了什么

static void Main(string[] args)
{
    Process bashProcess = new Process();
    bashProcess.StartInfo.FileName = @"C:\cygwin64\bin\bash.exe";
    bashProcess.StartInfo.Arguments = "-l -c echo blah; read";
    bashProcess.StartInfo.UseShellExecute = true;
    bashProcess.Start();


    bashProcess.WaitForExit();
    System.Console.WriteLine("Exit Code: {0}", bashProcess.ExitCode);

    System.Console.WriteLine("Press enter to exit...");
    System.Console.ReadLine();
}

刚刚找到了解决办法。用单引号括住整个命令可以使其正常工作。所以

bashProcess.StartInfo.Arguments = "-l -c echo blah; read";
应替换为以下内容:

bashProcess.StartInfo.Arguments = "-l -c 'echo blah; read'";
“-l-c'echo$0;read'blah'
应该给出相同的输出。“blah”字符串现在是第0个命令行参数。