bash管道-我试图从c#调用脚本

本文关键字:调用 脚本 管道 bash | 更新日期: 2023-09-27 18:05:21

我有一个cygwin bash脚本可以工作:

#!/bin/sh
cd myc
cp Stats.txt Stats.txt.cpy;
cat Stats.txt.cpy | sort -n -k1 | gawk '{sum+=$2; print $0,sum}' > Stats.txt

我想从c#中"调用"它:

string cmd="myscript.sh";
System.Diagnostics.Process proc = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo psi =
    new System.Diagnostics.ProcessStartInfo(@"C:'Cygwin'bin'bash.exe");
psi.Arguments = cmd;
psi.WorkingDirectory = "C:''cygwin''home''Moon";
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
proc.StartInfo = psi;
proc.Start();
string error = proc.StandardError.ReadToEnd();
string output = proc.StandardOutput.ReadToEnd();
this.textBox1.AppendText(error);
this.textBox1.AppendText(output);

它在cygwin终端中工作得很好,但是在c#中我得到:

输入指定文件两次

我怀疑这是一个管道的事情-谁能帮助?

bash管道-我试图从c#调用脚本

路径问题

您需要在脚本中设置path -否则它会使用不同的"非cygwin"路径并得到错误的命令。