在Mac应用程序中使用参数调用shell脚本

时间:2012-06-08 08:54:10

标签: objective-c xcode cocoa shell

我在调用shell脚本时遇到问题,该脚本从我的Cocoa应用程序中获取Mac的参数。

我创建了shell脚本,并将其放在应用程序的本地存储库中。它被称为SCRIPT。它需要一个参数,即URL地址。

我按如下方式调用脚本,但没有任何反应,没有错误或消息,只是脚本在无所事事后停止。

NSString *address = [_addressField stringValue];
NSString *resPath = [[NSBundle mainBundle] resourcePath];

NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath: [NSString stringWithFormat:@"%@/SCRIPT", resPath]];

NSArray *arguments;
arguments = [NSArray arrayWithObjects: address, nil];
[task setArguments: arguments];

NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];

NSFileHandle *file;
file = [pipe fileHandleForReading];

[task launch];

NSData *data;
data = [file readDataToEndOfFile];

NSString *status;
status = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSLog (@"%@", status);

先谢谢大家

2 个答案:

答案 0 :(得分:0)

如果我尝试使用/bin/echo作为启动路径,Objective-C代码接缝可以正常工作。所以我想问题是脚本。你能在问题中加入脚本吗?请注意,从Cocoa应用程序运行时的环境可能与在交互式shell中运行时的环境完全不同。

答案 1 :(得分:0)

可能是权限问题吗?尝试调用/ bin / sh并将脚本路径设置为第一个参数。