gpt4 book ai didi

c# - 如何从 C# 应用程序执行 linux shell 脚本?

转载 作者:太空宇宙 更新时间:2023-11-04 12:27:39 30 4
gpt4 key购买 nike

我有一个 linux shell 脚本,我可以在 Windows 中使用 CygWin 终端手动执行它。

sh E://Work/sync.sh E://Work/Voice/Temp

但是,当我尝试使用相同的参数在我的 C# 应用程序中运行 shell 脚本时,我遇到了一些困难。

string command = "E://Work/sync.sh E://Work/Voice/Temp";
ProcessStartInfo psi = new ProcessStartInfo(@"C:\cygwin64\bin\bash.exe", command);
psi.RedirectStandardError = true;
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
Process p = Process.Start(psi);
Console.WriteLine(p.StandardError.ReadToEnd());
Console.WriteLine(p.StandardOutput.ReadToEnd());

它给我错误:

E://Work/sync.sh: line 47: rm: command not found
E://Work/sync.sh: line 48: mkdir: command not found
E://Work/sync.sh: line 50: ls: command not found
E://Work/sync.sh: line 59: ls: command not found
E://Work/sync.sh: line 60: rmdir: command not found

然后我尝试了一种不同的方法。

ProcessStartInfo psi = new ProcessStartInfo(@"C:\cygwin64\bin\bash.exe");
psi.Arguments = "--login -c sh E://Work/sync.sh E://Work/Voice/Temp";
Process p = Process.Start(psi);

这将启动一个 CygWin 命令提示符,如下所示: enter image description here

然后,如果我手动输入我的命令,它就会起作用。E://Work/sync.sh E://Work/Voice/Temp

如何在没有任何手动输入的情况下从我的应用程序自动执行脚本?

最佳答案

在谷歌搜索后,我找到了一种方法。我所要做的就是将 "--login -c" 更改为 "--login -i"

ProcessStartInfo psi = new ProcessStartInfo(@"C:\cygwin64\bin\bash.exe");
psi.Arguments = "--login -i E://Work/sync.sh E://Work/Voice/Temp";
Process p = Process.Start(psi);

关于c# - 如何从 C# 应用程序执行 linux shell 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44175728/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com