首页 > 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提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

--

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。

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

  1. 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 ();

  2. 小开kaka 说:

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

  3. 上午八点 说:

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

  4. qingcheng 说:

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

  5. 天生俪姿 说:

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

  6. 木偶 说:

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

  7. Arestune 说:

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

留下一个回复

你的email不会被公开。