简介:
Unity在Mac下直接运行sheel需要用到一个静态方法即可.这里直接调用选择open,bash两种方式都可以.本文只阐述我自己感觉最灵活的方式.由于操作文件还是shall比较方便.而且通过shall调用其他的语言也没有什么问题.所以我直接是用bash来运行shall.
//TestShall.cs放到Editor文件夹下.
public class TestShall
{
[MenuItem("Shell/TestShall_Open")]
public static void TestShall_Open()
{
string shell = Application.dataPath + "/t1.sh";
System.Diagnostics.Process.Start("/bin/bash", shell);
Debug.LogFormat("TestShall_Open:{0}",shell);
}
}
目录结构(测试用例目录结构.并没有强制要求.如果有其他需求自行修改即可)
+Assets
->+Editor
->->TestShall.cs
->open.sh
->t1.sh
TestShell.log
Shall文件:
shall文件的权限.
测试用例t1.sh文件是放在Application.dataPath目录下.
shell执行用的bash.执行目录是在Assets的上一层.
ls -l #可以查看当前目录下的权限.如果t1.sh低可以用下面的语句
chmod 777 t1.sh #提高到最大权限
测试shall是否启动
t1.sh文件内容
#!/bin/bash
echo $0 >> TestShell.log
把当前的执行目录输出到一个log文件中.在log中可以发现执行目录是在Assets的上一层.
实现类似win下bat的效果:
win下面直接bat文件双击 会弹出终端.mac下面也是没问题的.需要用到open即可.
需要先把sh文件默认打开方式设置成终端.
如果就想一个shall文件会默认打开终端.需要右键打开方式上面设置就好了.
如果想全局都默认终端.右键找到 “内容简介” 然后找到一项叫 “打开方式”.然后可以看到 “全部更改”.
新建一个open.sh
注意权限
#!/bin/bash
echo 执行成功!
echo Shall目录$0
echo 执行目录$(pwd)
让t1.sh调用open.sh
修改t1.sh
#!/bin/bash
echo $0 >> TestShell.log
open Assets/open.sh #由于是Assets目录的上一层.我们的open.sh在Assets目录下所以需要指定.