1

私は動作するcygwinbashスクリプトを持っています:

#!/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#からは次のようになります。

入力ファイルを2回指定しました。

これはパイプの問題だと思います-誰か助けてもらえますか?

4

1 に答える 1

0

それは道の問題でした。

スクリプトでパスを設定する必要があります。そうしないと、別の「非cygwin」パスが使用され、間違ったコマンドが取得されます。

于 2013-03-23T12:10:27.127 に答える