我正在制作一个需要运行OS X shell命令的OS X应用程序。我有一个.command
文件,其中包含我需要执行的shell命令。现在我该如何执行它。我知道如何执行单个命令,但是如何执行shell .command
文件中的所有命令。
我的机器是OS X 10.11 Xcode 7.2.1
更新: 这是我的代码:
@implementation ViewController {
NSTask *task;
NSPipe *pipe;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self runCommand:[[NSBundle mainBundle] pathForResource:@"Test" ofType:@"command"] arguments:nil];
}
- (void)runCommand:(NSString *)cmd arguments:(NSArray *)args {
if (task)
{
[task interrupt];
}
else
{
task = [[NSTask alloc] init];
[task setLaunchPath:cmd];
[task setArguments:args];
pipe = [[NSPipe alloc] init];
[task setStandardOutput:pipe];
NSFileHandle* fh = [pipe fileHandleForReading];
[task launch];
[fh readInBackgroundAndNotify];
}
}
@end
更新2 :
以下是错误代码:Failed to set (contentViewController) user defined inspected property on (NSWindow): must provide array of arguments
答案 0 :(得分:0)
我在玩了一些参数后想出来了,你不能把nil放到args参数中。更新后的viewDidLoad将是:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self runCommand:[[NSBundle mainBundle] pathForResource:@"Test" ofType:@"command"] arguments:@[]];
}