Unity c#运行shell脚本

时间:2014-10-07 12:35:17

标签: c# macos bash terminal unity3d

使用Unity3D和编辑器脚本尝试在osx上的终端中运行脚本。

从终端运行test.sh时,GDCL应用程序执行其操作,然后输出参数。但是如果我从Unity3D编辑器运行脚本,我只在输出中获取参数。 GDCL不会运行。

如何让Unity3D运行终端脚本?

运行test.sh 的C#脚本(仅提供输出)

ProcessStartInfo psi = new ProcessStartInfo(); 
psi.FileName = Application.dataPath+"/test.sh";
psi.UseShellExecute = false; 
psi.RedirectStandardOutput = true;
psi.Arguments = "arg1 arg2 arg3";

//psi.Arguments = "test"; 
Process p = Process.Start(psi); 
string strOutput = p.StandardOutput.ReadToEnd(); 
p.WaitForExit(); 
UnityEngine.Debug.Log(strOutput);

test.sh脚本有chmod 777 (GDCL仅适用于终端)

#!/bin/sh
GDCL ~/Documents/Unity/testproject/Assets/Font\ Normal.GlyphProject ~/Documents/Unity/testproject/Assets/Textures/fontNormal/font -fo PlainText-txt
for arg in $*
do
    echo $arg
done

2 个答案:

答案 0 :(得分:0)

尝试将UseShellExecute设置为true或尝试直接运行shell并将脚本作为第一个参数传递。

psi.UseShellExecute = true; 

或者

ProcessStartInfo psi = new ProcessStartInfo(); 
psi.FileName = "/bin/sh";
psi.UseShellExecute = false; 
psi.RedirectStandardOutput = true;
psi.Arguments = Application.dataPath + "/test.sh" + " arg1 arg2 arg3";

答案 1 :(得分:0)

在终端中尝试哪个GDLC,在test.sh中使用完整路径获取完整路径而不是GDLC然后它将起作用