我正在创建一个应用程序,希望从其中运行一些shell脚本。其中一个脚本创建了一个.plist文件,另一个对一个二进制文件进行了修补。之所以要使用shell脚本,是因为我知道它可以实现我需要的两个功能。虽然我不知道如何使用Objective-C/Cocoa完成这个任务,但我相信有办法可以做到。如果您有任何建议,请告诉我,将不胜感激。
我正在创建一个应用程序,希望从其中运行一些shell脚本。其中一个脚本创建了一个.plist文件,另一个对一个二进制文件进行了修补。之所以要使用shell脚本,是因为我知道它可以实现我需要的两个功能。虽然我不知道如何使用Objective-C/Cocoa完成这个任务,但我相信有办法可以做到。如果您有任何建议,请告诉我,将不胜感激。
NSTask
。 NSTask
是一个运行任何终端命令的系统。以下是你如何使用它来执行shell脚本的示例:NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/path/to/script/sh"];
[task setArguments:[NSArray arrayWithObjects:@"yourScript.sh", nil]];
[task setStandardOutput:[NSPipe pipe]];
[task setStandardInput:[NSPipe pipe]];
[task launch];
[task release];
/path/to/script/sh yourScript.sh
。如果您的脚本需要任何参数,可以将它们添加到参数数组中。标准输出将重定向所有输出到管道对象,如果您想要输出到文件,则可以将其挂接到该对象上。我们需要使用另一个NSPipe
用于输入的原因是使NSLog
正常工作,而不是记录到脚本中。NSTask
如何工作的信息,请参见此答案。[[NSBundle mainBundle] pathForResource:@"scriptName" ofType:@"sh"]
获取其路径。然后只需将该路径用作第一个参数,它应该可以正常运行。 - Alexis King