Objective c NSTask与bash脚本问题
例如,我有一个简单的bash脚本:Objective c NSTask与bash脚本问题,objective-c,cocoa,bash,shell,nstask,Objective C,Cocoa,Bash,Shell,Nstask,例如,我有一个简单的bash脚本: #!/bin/sh cd $1; 还有这个可可包装纸: NSTask *cd = [[NSTask alloc] init]; NSString *testFolder = [NSString stringWithString:@"/Users/test/Desktop/test 1"]; [cd setLaunchPath:@"/bin/sh"]; [cd setArguments:[NSArray arrayWithObjects:[[NSBund
#!/bin/sh
cd $1;
还有这个可可包装纸:
NSTask *cd = [[NSTask alloc] init];
NSString *testFolder = [NSString stringWithString:@"/Users/test/Desktop/test 1"];
[cd setLaunchPath:@"/bin/sh"];
[cd setArguments:[NSArray arrayWithObjects:[[NSBundle mainBundle]
pathForResource:@"cd" ofType:@"sh"],testFolder, nil]];
[cd launch];
[cd release];
这是不正确的。问题是testFolder中的文件夹名中有空格。
我试图设置testFolder
如下:
NSString*testFolder=[NSString-stringWithString:@”/Users/test/Desktop/test\\1]
但这也是同样的错误:
cd.sh:第9行:cd:/Users/test/Desktop/test:没有这样的文件或目录
没有空格的路径(例如:
@”/Users/test/Desktop/test1“
)也可以工作 对于NSTask
,这并不是一个真正的问题。打开终端(如果使用tcsh
,请运行bash
),然后执行以下操作
这不管用。你需要做什么
$ cd "$FUBAR"
相反。这是因为
sh
的展开规则。阅读bash手册,例如,名为扩展的部分。从shell脚本初级读本中可能也会有所帮助。我一直在寻找为什么会出现“无法访问启动路径”的问题,而您的代码让我意识到我需要[cd setLaunchPath:@”/bin/sh];这不是你的问题,但还是很有帮助的
$ cd "$FUBAR"