如何在我的应用程序中运行shell命令

时间:2016-02-15 11:29:05

标签: macos shell

我正在制作一个需要运行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

1 个答案:

答案 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:@[]];
}