我有一个我正在创建的应用程序,并希望从其中运行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];
Run Code Online (Sandbox Code Playgroud)
那将运行命令/path/to/script/sh yourScript.sh.如果您的脚本需要任何参数,则可以将它们添加到参数数组中.标准输出将所有输出重定向到管道对象,如果要输出到文件,可以挂钩.我们需要使用另一个NSPipe输入的原因是使NSLog工作正常而不是记录到脚本.
如果您想了解有关NSTask工作原理的更多信息,请参阅此答案.