Вам нужно будет использовать NSTask
.NSTask
- система для запуска любой команды терминала.Вот как вы можете использовать его для выполнения сценария оболочки:
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
, см. thisответить .