2012-09-06 19 views
4

我想使用C#来执行一个shell脚本。 基于类似的问题,我找到了这样的解决方案。如何在OSX上使用C#运行shell脚本?

System.Diagnostics.Process.Start("/Applications/Utilities/Terminal.app","sunflow/sunflow.sh"); 

目前,它打开终端,然后打开与默认应用程序(的Xcode在我的情况)的shell文件。更改默认应用程序不是一种选择,因为此应用程序需要为其他用户安装。

理想情况下,解决方案将允许shell文件的参数。

+0

在这里我的Mac没有进入分离三个令牌,但尝试启动或打开命令 –

回答

7

我不能与Mac测试的权利,但下面的代码可以在Linux,并应在Mac上工作,因为单非常密切HEWS到微软的核心.NET接口:

ProcessStartInfo startInfo = new ProcessStartInfo() 
{ 
    FileName = "foo/bar.sh", 
    Arguments = "arg1 arg2 arg3", 
}; 
Process proc = new Process() 
{ 
    StartInfo = startInfo, 
}; 
proc.Start(); 

的几点说明关于我的环境:

  • 我创建了一个专门用于仔细检查此代码的测试目录。
  • 我创建在子目录FOO文件bar.sh,用下面的代码:

    #!/bin/sh 
    for arg in $* 
    do 
        echo $arg 
    done 
    
  • 我缠在上面test.cs中的C#代码Main方法,并用dmcs Test.cs编译,并执行与mono Test.exe

  • 最终输出是“ARG1参数3”,由新行