首页 > Unity3D频道 > 【你好Unity3D】 > #你好Unity3D#解决Unity不能调用shell脚本传递参数的问题(来自我的长微博)
2014
06-17

#你好Unity3D#解决Unity不能调用shell脚本传递参数的问题(来自我的长微博)

我想通过C#调用shell脚本,单纯的执行脚本没有任何问题,但是如果你要给shell脚本传递参数,那么死活传不进去。我找了好多资料,网上有人有是mono的bug..不过还是要感谢微博上好友 @程序员达达 告诉了我一个方法。

我的代码是这样的,我可以顺利的打开terrminal 也可以调用shell脚本,但是参数就是传递不进去。

 解决的办法是,不用terrminal去执行shell。因为不用terrmainal 就看不到echo的输出了,为了验证正确性,我用shell脚本来给指定路径下的一个文件写入内容。。

 

shell脚本很简单, 就是把参数1 写入 到参数2 路径下的文件里。

 

 如下图所示,我把shell传入的参数顺利的写到了test.log文本里。。 

#你好Unity3D#解决Unity不能调用shell脚本传递参数的问题(来自我的长微博) - 雨松MOMO程序研究院 - 1

最好还是要感谢微博上的那位同学,希望大家关注我的微博,互相学习吧嘿嘿。。

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

#你好Unity3D#解决Unity不能调用shell脚本传递参数的问题(来自我的长微博)》有 10 条评论

  1. 任伟 说:

    [MenuItem(“tools/1”)]
    static void tolls()
    {
    string shell = Application.dataPath + “/shell.sh”;
    string arg1 = “unity”;
    string arg2 = Application.dataPath + “test.txt”;
    string argss = shell + ” ” + arg1 + ” ” + arg2;
    System.Diagnostics.Process.Start(“/bin/bash”, argss);
    Debug.Log(“输出shell”);
    }当我这样操作的时候,并没有出现预定的结果 我在中端中执行 zsh –version
    是可以找到/bin/bash这个的 不知道为什么吗 来自10.15。3

  2. ClaineLe 说:

    特意,过来再回贴一下。亲测可用,直接执行shell,且能自动开启控制台,显示日志。目前最棒的方法。
    System.Diagnostics.Process myCustomProcess = new System.Diagnostics.Process();
    myCustomProcess.StartInfo.FileName = “osascript”;
    myCustomProcess.StartInfo.Arguments = string.Format (“-e ‘tell application \”Terminal\” \n activate \n do script \”cd {0} && sh {1} {2} {3}\” \n end tell'”,Application.dataPath + “/Editor/Build/Build_iOS/”, “shell-just-build.sh”, projectPath, ipaFileName);
    myCustomProcess.StartInfo.UseShellExecute = false;
    myCustomProcess.StartInfo.RedirectStandardOutput = false;
    myCustomProcess.Start();
    myCustomProcess.WaitForExit ();

  3. 小开kaka 说:

    这个办法。貌似比输出到Log里面更好一些。建议参考使用
    https://forum.unity.com/threads/open-terminal-window-for-osx-system-diagnostics-process.512692/

  4. 上午八点 说:

    我使用直接打开Terminal方式可以执行sh文件或者command文件,但是参数传递不过去,
    使用 Process.Start(“/bin/bash”, argss); 方式则sh文件不会执行到,求教:是否是我的bash安装目录不在bin下导致?

  5. qingcheng 说:

    有一个问题,如何在shell中通知unity,也就是例如shell执行结束之后如何触发unity脚本中的事件。我之前研究了OutputDataReceived委托,但好像没有办法触发了

  6. 天生俪姿 说:

    话说你这个是针对 苹果的? windows 没有/bin/bash 这个目录吧

  7. 木偶 说:

    怎么样既能显示shell输出内容又能传递参数啊。

  8. Arestune 说:

    非常有用,不过想请教下如果我要copy一个文件到另一个目录,.sh文件里面应该怎样写呢?对于shell命令不太会~非常感谢

留下一个回复

你的email不会被公开。