例如,我有这个简单的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"
)也可以。
答案 0 :(得分:2)
NSTask
这不是一个真正的问题。打开您的终端(如果您使用bash
,则运行tcsh
),然后执行
$ mkdir foo\ bar
$ FUBAR=foo\ bar
$ cd $FUBAR
这不起作用。你需要做
$ cd "$FUBAR"
代替。这是因为sh
的扩展规则。阅读bash的手册,例如here,名为 EXPANSION 的部分。来自shell脚本编写入门的This section也可能会有所帮助。