1

例如,我有这个简单的 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:[[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: line 9: cd: /Users/test/Desktop/test: No such file or directory

没有空格的路径(例如:)@"/Users/test/Desktop/test1"也可以。

4

1 回答 1

2

这不是真正的问题NSTask。打开您的终端(bash如果您使用,则运行tcsh),然后执行

$ mkdir foo\ bar
$ FUBAR=foo\ bar
$ cd $FUBAR

这行不通。你需要做

$ cd "$FUBAR"

反而。这是因为 的扩展规则sh。阅读 bash 的手册,例如这里,名为EXPANSION的部分。shell 脚本入门的这一部分也可能有所帮助。

于 2010-09-08T00:45:05.880 回答