本文介绍了庆典管道 - 我想从C#调用脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个cygwin的bash脚本的作品:

I have a cygwin bash scripts that works:

#!/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#来呼的:

I want to "call" it from 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#我得到:

输入文件中指定两次。

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

I suspect this is a pipes thing - can anyone help?

推荐答案

这是一个路径问题。

您需要设置在脚本路径 - 否则它使用了不同的非Cygwin的路径,并得到错误的命令

You need to set path in the script - otherwise it uses a different "non-cygwin" path and gets wrong commands.

这篇关于庆典管道 - 我想从C#调用脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-16 23:58